如果条件为 TRUE,MySQL IF() 函数返回一个值,如果条件为 FALSE,则返回另一个值。
语法
IF(condition, value_if_true, value_if_false)
参数
condition | 必填。 指定要测试的值。 |
value_if_true | 必填。 指定条件为TRUE时返回的值。 |
value_if_false | 必填。 指定条件为FALSE时返回的值。 |
返回值
返回基于condition 的值。如果条件为 TRUE,MySQL IF() 函数返回value_if_true,如果条件为 FALSE,则返回value_if_false。
示例 1:
下面的示例显示 IF() 函数的用法。
mysql> SELECT IF(100>200, "TRUE", "FALSE");
Result: "FALSE"
mysql> SELECT IF(100<200, "T", "F");
Result: "T"
mysql> SELECT IF(100<200, 500, 600);
Result: 500
mysql> SELECT IF(DATE(NULL), 500, 600);
Result: 600
mysql> SELECT IF('', 500, 600);
Result: 600
mysql> SELECT IF(ISNULL(NULL), "Replace NULL", "This is not NULL");
Result: Replace NULL
示例 2:
考虑一个名为 Product 的数据库表,其中包含以下记录:
ProductName | Price | StockQuantity | OrderQuantity |
---|---|---|---|
Apple | 1.00 | 100 | 20 |
Banana | 1.25 | 120 | 30 |
Orange | 2.15 | 105 | NULL |
Watermelon | 3.50 | 75 | 15 |
如果OrderQuantity是可选的并且可以包含NULL值。下面提到的语句将给出 NULL 值。
SELECT *, Price * (StockQuantity + OrderQuantity) AS Inventory
FROM Product;
这将产生如下所示的结果:
ProductName | Price | StockQuantity | OrderQuantity | Inventory |
---|---|---|---|---|
Apple | 1.00 | 100 | 20 | 120.0 |
Banana | 1.25 | 120 | 30 | 187.5 |
Orange | 2.15 | 105 | NULL | NULL |
Watermelon | 3.50 | 75 | 15 | 315.0 |
为了避免这种情况,IF()函数与 ISNULL() 函数结合使用,可以为包含 NULL 值的列提供替代值。
SELECT *,
Price * (StockQuantity + IF(ISNULL(OrderQuantity), 0, OrderQuantity) AS Inventory
FROM Product;
这将产生如下所示的结果:
ProductName | Price | StockQuantity | OrderQuantity | Inventory |
---|---|---|---|---|
Apple | 1.00 | 100 | 20 | 120.0 |
Banana | 1.25 | 120 | 30 | 187.5 |
Orange | 2.15 | 105 | NULL | 225.75 |
Watermelon | 3.50 | 75 | 15 | 315.0 |