美文网首页数据库程序员
Oracle的nvl函数和nvl2函数

Oracle的nvl函数和nvl2函数

作者: smileNicky | 来源:发表于2018-12-13 23:11 被阅读10次

    一、基本语法

    介绍一下oracle的nvl函数和nvl2函数。

    nvl函数
    nvl函数基本语法为nvl(E1,E2),意思是E1为null就返回E2,不为null就返回E1。

    nvl2函数
    nvl2函数的是nvl函数的拓展,基本语法为nvl2(E1,E2,E3),意思是E1为null,就返回E3,不为null就返回E2。

    二、业务场景

    nvl()函数比较常用的是这样的nvl(E1,0),意思是E1参数查询到为null的情况,就返回0,不为null就返回E1,常用于非空校验。

    nvl2()函数也讲一个业务场景。今天用列转行函数vm_concat查询的时候,遇到一个问题,对vm_concat不熟悉的可以参考我的另外一篇博客:https://blog.csdn.net/u014427391/article/details/84981114

    我用vm_concat查询,假如b参数为空的情况就会出现“a()”的参数,我想做的是b参数为空的情况,直接返回“a”参数,b参数不为空的情况才返回“a(b)”类型的数据,比如可以是用户名a(账号b)这样显示。原来SQL是这样的。

    select to_char(nvl2(b,vm_concat(a||'('||b||')'), '') from A group by id
    

    改写SQL,通过nvl2函数实现改写:

    select to_char(wm_concat(nvl2(b,
                                 a || '(' || b || ')',
                                  a))) as 返回参数
    

    相关文章

      网友评论

        本文标题:Oracle的nvl函数和nvl2函数

        本文链接:https://www.haomeiwen.com/subject/ffbihqtx.html