oracle中使用nvl(),nvl2()和NULLIF 的区别
1.nvl()
nvl (expr1, expr2):expr1为NULL,返回expr2;不为NULL,返回expr1。注意两者的类型要一致
通过查询获得某个字段的合计值,如果这个值为null,则给出一个预设的 默认值(此处为0,也可以设置为其他值)。
例如:
select nvl(sum(t.dwx),1) from tb t
表示如果sum(t.dwx) = null就返回1
2.nvl2()
nvl2(E1, E2, E3)的功能为:如果E1为NULL,则函数返回E3,若E1不为null,则返回E2。E2和E3类型不同的话,E3会转换为E2的类型
l例如:
select nvl(t.name,'张三','李四') from tb t
表示如果t.name为null ,则函数返回李四,若t.name不为null,则函数返回张三
3.NULLIF ()
NULLIF (expr1, expr2):相等返回NULL,不等返回expr1
例如:
select NULLIF(1,1) from dual
返回null
select NULLIF(1,2) from dual
返回1
还没有评论,来说两句吧...