SQL Server之其他函数——空值处理

时间:2021-01-19 19:57:25

空值处理
coalesce( expression [ ,...n ] )返回其参数中第一个非空表达式。

Select coalesce( null , null , ' 1 ' , ' 2 ' ) //结果为 1

coalesce(expression1,...n) 与此 case函数等效:

CASE
WHEN (expression1 IS NOT NULL) THEN expression1
...
WHEN (expressionN IS NOT NULL) THEN expressionN
ELSE NULL
END

注意:
当第一个表达式为字符串且不能转化为整数时,若在后面的表达式中有整数,这样的语句是会报错的。
例如:

Select COALESCE( ' a ' , null , ' 1 ' , 2 ) //这是错误的

这相当于

select
CASE
WHEN (
' a ' IS NOT NULL) THEN ' a '
WHEN (
2 IS NOT NULL) THEN 2
ELSE NULL
END //会出现错误,因为系统无法将a转换为相应的整数

但是

select
CASE
WHEN (
' a ' IS NOT NULL) THEN ' a '
WHEN (
2 IS NOT NULL) THEN ' 2 '
ELSE NULL
END //这是正确的

所以我们在使用coalesce函数时,应该相当小心。
isnull( check_expression , replacement_value ) 使用指定的替换值替换 NULL。
replacement_value 必须是可以隐式转换为 check_expresssion 类型的类型。
在表stu中
SQL Server之其他函数——空值处理

select isnull(ssex, ' p ' ) from stu //若ssex列中有NULL值,那么返回p

nullif( expression , expression ) 如果两个指定的表达式相等,则返回空值,否则 NULLIF 返回第一个 expression 的值。

select nullif( 1 , 1 ) //结果为 NULL
select nullif(
1 , 2 ) //结果为 1