darkpoon 发表于 2015-7-3 07:58:22

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

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


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


SelectCOALESCE('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中



select isnull(ssex,'p') from stu      //若ssex列中有NULL值,那么返回p  nullif( expression ,expression ) 如果两个指定的表达式相等,则返回空值,否则 NULLIF 返回第一个 expression 的值。


select nullif(1,1)                   //结果为 NULL
select nullif(1,2)                   //结果为 1
页: [1]
查看完整版本: SQL Server之其他函数——空值处理