SQL Server (Transact-SQL) COALESCE() 函数返回列表中的第一个非空表达式。
语法
COALESCE(expression1, expression2, ... expression_n)
参数
expression1、expression2、...expression_n | 必填。 指定用于测试非空值的表达式。这些表达式必须具有相同的数据类型。 |
返回值
返回给定列表中的第一个非空表达式。该函数返回任何数据类型,例如字符串、数字、日期等,但所有表达式必须是相同的数据类型。
示例 1:
下面的示例显示了COALESCE() 函数。
SELECT COALESCE(NULL, NULL, NULL, 'London', 'Paris');
Result: 'London'
SELECT COALESCE('Mumbai', NULL, NULL, 'London', 'Paris');
Result: 'Mumbai'
SELECT COALESCE(1, 2, NULL, NULL, 3);
Result: 1
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 |