sqlserver空值转换函数ISNULL与Coalesce的区别

  • 原创
  • |
  • 浏览: 6264
  • |
  • 更新:

sqlserver对于空值、NULL的判断与转换,最常用的就是ISNULL函数,那么,既然有了ISNULL函数,为什么还要引入Coalesce函数呢?它们之间有什么区别呢?

方法/步骤

  1. 2

    往测试表 NullTestTbl 中插入多行测试数据

    INSERT INTO NullTestTbl(Id, Col1, Col2, Col3, Col4) VALUES(NEWID(), '第一行第二列', '第一行第三列', '第一行第四列', '第一行第五列');

    INSERT INTO NullTestTbl(Id, Col1, Col2, Col3, Col4) VALUES(NEWID(), NULL, '第二行第三列', '第二行第四列', '第二行第五列');

    INSERT INTO NullTestTbl(Id, Col1, Col2, Col3, Col4) VALUES(NEWID(), '', '第三行第三列', '第三行第四列', '第三行第五列');

    INSERT INTO NullTestTbl(Id, Col1, Col2, Col3, Col4) VALUES(NEWID(), '', '', '', '第三行第五列');

    INSERT INTO NullTestTbl(Id, Col1, Col2, Col3, Col4) VALUES(NEWID(), NULL, NULL, NULL, NULL);

  2. 3

    使用ISNULL判断值为NULL的数据,从执行结果看出,ISNULL对值为NULL的字段会转换为指定的值返回

  3. 4

    使用ISNULL判断值为空字符串的数据,从执行结果看出,ISNULL对空字符串值,并不会进行转换,直接返回空字符串

  4. 5

    使用Coalesce判断值为NULL的数据,从直接结果看出,Coalesce对值为NULL的字段会转换为指定的值返回

  5. 6

    使用Coalesce判断值为空字符串的数据,从执行结果看出,Coalesce对空字符串值,并不会进行转换,直接返回空字符串。

    网上有很多都说Coalesce判断值为空字符串,会返回后面指定的值,其实网上说法是错误的,都没经过验证

  6. 7

    ISNULL与Coalesce的区别

    1)两个函数对于NULL、空字符串的判断都是一样的效果

    2)ISNULL最多只有两个参数;Coalesce可以多很多个参数,但是,必须有一个参数返回结果不为NULL

    3)Coalesce返回所有参数中第一个不是NULL的结果

    END
经验内容仅供参考,如果您需解决具体问题(尤其法律、医学等领域),建议您详细咨询相关领域专业人士。
作者声明: 本篇经验系本人依照真实经历原创,未经许可,谢绝转载。
展开阅读全部
此内容有帮助 ?