MySQL COALESCE() 函数返回列表中的第一个非空表达式。如果所有表达式的计算结果为NULL,则此函数将返回NULL。
语法
COALESCE(expression1, expression2, ... expression_n)
参数
expression1、expression2、...expression_n | 必填。 指定要测试非空值的表达式。 |
返回值
返回第一个非空表达式
示例 1:
下面的示例显示了 COALESCE() 函数的用法。
mysql> SELECT COALESCE(NULL, NULL, NULL, 'London', 'Paris');
Result: 'London'
mysql> SELECT COALESCE('Mumbai', NULL, NULL, 'London', 'Paris');
Result: 'Mumbai'
mysql> SELECT COALESCE(NULL, NULL, NULL, NULL, NULL);
Result: NULL
mysql> SELECT COALESCE(1, 2, NULL, NULL, 3);
Result: 1
mysql> SELECT COALESCE(NULL, 10, NULL, 20, 30);
Result: 10
示例 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 |
为了避免这种情况,COALESCE()如果列包含 NULL 值,则可以使用函数为该列提供替代值。
SELECT *, Price * (StockQuantity + COALESCE(OrderQuantity, 0)) 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 |