经常写SQL脚本的朋友,对ISNULL函数肯定不会陌生,但您是否知道,与ISNULL类似的函数还有还有COALESCE和NULLIF,您能明确知晓它们之间的联系和区别么?我们今天就一起把三个函数捋一捋。
![9d1a53febd6b9e2f181ba3d81e4abef4.png](https://i-blog.csdnimg.cn/blog_migrate/1ca8df00256d4d9a85288ae8163f27fa.jpeg)
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,'测试值');
![79a71b6d7764439efd778d2c96ff7794.png](https://i-blog.csdnimg.cn/blog_migrate/71412ec0a49717058be829f674759553.jpeg)
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);
![db161465bc96d0950e2d9ca36432642d.png](https://i-blog.csdnimg.cn/blog_migrate/16a238ddf9de305a0a251d52ee29055a.jpeg)
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);
![8aa2c38b8137b50ff19711dad27a5d56.png](https://i-blog.csdnimg.cn/blog_migrate/7e67feb9bf6ff41a10bc221dc0ee9208.jpeg)
希望对您有所帮助!