MySQL 函数

如果条件为 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 的数据库表,其中包含以下记录:

ProductNamePriceStockQuantityOrderQuantity
Apple1.0010020
Banana1.2512030
Orange2.15105NULL
Watermelon3.507515

如果OrderQuantity是可选的并且可以包含NULL值。下面提到的语句将给出 NULL 值。

SELECT *, Price * (StockQuantity + OrderQuantity) AS Inventory  
FROM Product; 

这将产生如下所示的结果:

ProductNamePriceStockQuantityOrderQuantityInventory
Apple1.0010020120.0
Banana1.2512030187.5
Orange2.15105NULLNULL
Watermelon3.507515315.0

为了避免这种情况,IF()函数与 ISNULL() 函数结合使用,可以为包含 NULL 值的列提供替代值。

SELECT *, 
Price * (StockQuantity + IF(ISNULL(OrderQuantity), 0, OrderQuantity) AS Inventory
FROM Product; 

这将产生如下所示的结果:

ProductNamePriceStockQuantityOrderQuantityInventory
Apple1.0010020120.0
Banana1.2512030187.5
Orange2.15105NULL225.75
Watermelon3.507515315.0