经常写SQL脚本的朋友,对ISNULL函数肯定不会陌生,但您是否知道,与ISNULL类似的函数还有还有COALESCE和NULLIF,您能明确知晓它们之间的联系和区别么?我们今天就一起把三个函数捋一捋。
ISNULL:使用指定的替换值替换NULL
isnull是SQL中最常用的判断替换函数,主要用来判断表达式或字段是否为NULL值,若为NULL值则返回替换值、若不为NULL值则返回自身。
其语法格式为:
ISNULL(表达式,替换值)
ISNULL共有两个参数,其含义为:
第一个参数,作为被检查是否为NULL的常量值、变量、表达式或字段。可以是任何数据类型。
第二个参数,当第一个参数是NULL值时,返回的替换值。替换值的类型原则上与第一个参数的类型必须一致。
参考下面的示例:
declare @val01 nvarchar(max);declare @val02 nvarchar(max);set @val01=null;select isnull(@val01,'测试值');
NULLIF:判断两个表达式是否相等
nullif是我们平时用的不太多的判断替换函数,主要用来判断两个参数值是否相等,如果相等则返回NULL值、如果不相等则返回第一个参数的值。
其语法格式为:
NULLIF(表达式1,表达式2)
NULLIF也有两个参数,两个参数均可为常量值、变量、表达式或字段,对两个参数的最终值进行对比,如果最终值相等,则返回NULL,若不相等,则返回第一个参数的最终值。
参考下面的示例:
declare @val01 nvarchar(max);declare @val02 nvarchar(max);set @val01='测试';set @val02='测试值';select nullif(@val01,@val02);set @val01='测试值';select nullif(@val01,@val02);
COALESCE:按顺序返回第一个非NULL值
coalesce是一个比价特殊的函数,特殊在其参数个数是不确定的,是一个表达式列表,返回值则是第一个不为NULL的表达式的最终值。
其语法格式为:
COALESCE (表达式1[ ,...n ] )
每个参数均可为常量值、变量、表达式或字段。
参考下面的示例:
declare @val01 nvarchar(max);declare @val02 nvarchar(max);declare @val03 nvarchar(max);set @val01=null;set @val02=null;set @val03='测试值3';select coalesce(@val01,@val02,@val03);
希望对您有所帮助!