oracle中使用nvl(),nvl2()和NULLIF 的区别

偏执的太偏执、 2022-03-26 04:48 325阅读 0赞

1.nvl()

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

通过查询获得某个字段的合计值,如果这个值为null,则给出一个预设的 默认值(此处为0,也可以设置为其他值)。

例如:

  1. 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例如:

  1. select nvl(t.name,'张三','李四') from tb t

表示如果t.name为null ,则函数返回李四,若t.name不为null,则函数返回张三

3.NULLIF ()

NULLIF (expr1, expr2):相等返回NULL,不等返回expr1

例如:

  1. select NULLIF(1,1) from dual

返回null

  1. select NULLIF(1,2) from dual

返回1

发表评论

表情:
评论列表 (有 0 条评论,325人围观)

还没有评论,来说两句吧...

相关阅读