coalesce函数
coalesce函数的使用说明
用法
返回其参数中第一个非空表达式。
语法
coalesce ( 表达式1 ,…表达式n )
返回类型
返回数据类型优先级最高的表达式的数据类型,如果所有参数均为null,则coalesce返回null。
1 | SELECT COALESCE(NULL,1) |
第一行,由于第一个表达式为null,依次寻找不为null的结果,所以返回值应该是1。
第二行,由于所有的表达式都为null,所以返回值为null。
等效的case函数
case语句
1 | SELECT COALESCE(expression1,expression2,...expressionN) |
尽管 IS NULL 等效于 COALESCE,但它们的行为是不同的。包含具有非空参数的 IS NULL 的表达式将视为 NOT NULL,而包含具有非空参数的 COALESCE 的表达式将视为 NULL。
SQL Server的非空参数问题
在 SQL Server 中,若要对包含具有非空参数的 COALESCE 的表达式创建索引,可以使用 PERSISTED 列属性将计算列持久化,例如下面案例
1 | CREATE TABLE #CheckSumTest |
COALESCE 使用示例
在以下示例中,wages 表中包括以下三列有关雇员的年薪的信息:hourly wage、salary 和 commission。但是,每个雇员只能接受一种付款方式。若要确定支付给所有雇员的金额总数,请使用 COALESCE 函数,它只接受在 hourly_wage、salary 和 commission 中找到的非空值。
1 | SET NOCOUNT ON; |
结果集
1 | Total Salary |