NVL,NVL2,NULLIF有什么区别,及使用.

来源:互联网 发布:海外淘宝首页 编辑:程序博客网 时间:2024/06/05 18:56

NVL,NVL2在我们日常开发中经常能遇到,今天辞职走流程中闲着,特意写一篇文章记载下来.怕自己理解有错,还特意百度了一下,然后得到了NULLIF的使用,也算是意外收获了.


NVL (expr1, expr2):expr1为NULL,返回expr2;不为NULL,返回expr1。注意两者的类型要一致 .

NVL2 (expr1, expr2, expr3) :expr1不为NULL,返回expr2;为NULL,返回expr3。expr2和expr3类型不同的话,expr3会转换为expr2的类型 .
NULLIF (expr1, expr2):expr1与expr2相等时返回NULL,不相等时返回expr1.(这个与上面两个返回定义最为不一样)


例子如下:

select nvl(null,2) from dual -- 返回结果: 2 
select nvl(1,2) from dual  --  返回结果: 1


select nvl2(1,2,3) from dual --返回结果: 2
select nvl2(null,2,3) from dual --返回结果: 3


select NULLIF(1,1) from dual -- 返回结果: null
select NULLIF(1,2) from dual -- 返回结果: 1