Oracle的nvl函数和nvl2函数

Posted SmileNicky的博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle的nvl函数和nvl2函数相关的知识,希望对你有一定的参考价值。

一、基本语法

介绍一下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函数的主要内容,如果未能解决你的问题,请参考以下文章

oracle的nvl和nvl2是啥函数,两者区别是啥呢

ORACLE NVL 和 NVL2 函数的使用

nvl、nvl2、nullif、coalesce函数的区别

oracle 函数 NVL2...NVL

说说 Oracle 的 NVL 与 NVL2 函数

ORACLE NVL()和NVL2()函数使用