COALESCE()函数
主流数据库系统都支持COALESCE()函数,这个函数主要用来进行空值处理,其参数格式如下:
COALESCE ( expression,value1,value2……,valuen)
COALESCE()函数的第一个参数expression为待检测的表达式,而其后的参数个数不定。
COALESCE()函数将会返回包括expression在内的所有参数中的第一个非空表达式。
如果expression不为空值则返回expression;否则判断value1是否是空值,
如果value1不为空值则返回value1;否则判断value2是否是空值,
如果value2不为空值则返回value2;……以此类推,
如果所有的表达式都为空值,则返回NULL。
MSSQLServer中两个类函数的区别:
ISNULL(expression,value) 函数只能传两个字段。
COALESCE ( expression,value1,value2……,valuen) 函数能传N个字段。N>=2
ISNULL代替COALESCE的写法 : ISNULL( expression,ISNULL(value1,ISNULL(value2,ISNULL(valuen-1,valuen))
isnull参数可以全为null
COALESCE 参数中至少要有一个不为null
测试:
select isnull(1,2)
select isnull(null ,2)
select isnull(null ,null)
select coalesce(1,2,3)
select coalesce(null,2,3)
select coalesce(1,null,3)
select coalesce(null,null,3)
-- select coalesce(null,null,null) --报错
select isnull(null,isnull(null,3))
总结:如果取两个字段判断使用ISNULL()函数,多于两个字段判断使用COALESCE()函数。