SQL Server 函数

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 的数据库表,其内容如下记录:

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

为了避免这种情况,COALESCE()如果列包含 NULL 值,则可以使用函数为该列提供替代值。

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

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

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