SQL中coalesce函数的用法(也相当于HiveQL中nvl函数的用法),其参数格式如下:COALESCE(expression,value1,value2……,valuen);COALESCE()函数的第一个参数expression为待检测的表达式,而其后的参数个数不定。COALESCE()函数将会返回包括expression在内的所有参数中的第一个非空表达式。如果expression不为空值则返回expression;否则判断value1是否是空值,如果value1不为空值则返回value1;否则判断value2是否是空值,如果value2不为空值则返回value3;……以此类推。
例1:Usethenumberifthereisnonumbergiven.Showteachernameandmobilenumberor
selectname,COALESCE(mobile,)fromteacher
SQL:coalesce()函数,①用途:将空值替换成其他值,返回第一个非空值;②表达式:COALESCE是一个函数,(expression_1,expression_2,……,expression_n)依次参考各参数表达式,遇到非null值即停止并返回该值。如果所有的表达式都是空值,最终将返回一个空值。使用COALESCE在于大部分包含空值的表达式最终将返回空值。
扩展资料:
COALESCE()函数可以用来完成几乎所有的空值处理,不过在很多数据库系统中都提供了它的简化版,这些简化版中只接受两个变量,其参数格式如下:
MYSQL:
IFNULL(expression,value)
MSSQLServer:
ISNULL(expression,value)
Oracle:
NVL(expression,value)
这几个函数的功能和COALESCE(expression,value)是等价的。
比如SQL语句用于返回人员的“重要日期”,如果出生日期不为空则将出生日期作为“重要日期”,如果出生日期为空则返回注册日期的值:
MYSQL:
SELECTFBirthDay,FRegDay,
IFNULL(FBirthDay,FRegDay)ASImportDay
FROMT_Person
MSSQLServer:
SELECTFBirthDay,FRegDay,
ISNULL(FBirthDay,FRegDay)ASImportDay
FROMT_Person
Oracle:
SELECTFBirthDay,FRegDay,
NVL(FBirthDay,FRegDay)ASImportDay
FROMT_Person