Oracle的 nvl 函数及 nvl2 函数的应用

一、基本语法:

  • nvl 函数:

nvl 函数的基本语法为 nvl(E1, E2),如果E1为 NULL,则函数返回E2,否则返回E1本身。但此函数有一定局限,所以就有了nvl2函数。如果两个参数的值都为空值,则返回空值。

注意:第一个参数和第二个参数可以是任何类型的数据,但两个参数的数据类型必须相同(或能够由Oracle隐式转换为相同的类型)

  • nvl2 函数:

nvl2 函数的基本语法为 nvl2(E1, E2, E3),它是在nvl函数的功能上扩展的,如果E1为 NULL,则函数返回E3,若E1不为 NULL,则返回E2。

二、返回值类型

返回值类型可以为字符型、日期型、日期时间型、数值型、货币型、逻辑型或nul值。

三、说明

在不支持 null 值或 null 值无关紧要的情况下,可以使用 nvl() 函数来移去计算或操作中的 null 值。

select nvl(a.name,'为空想要返回的值') as name from test01 a join test02 b on a.id = b.id;

注意:两个参数得类型要匹配,必须为同一数据类型,除非显式的使用 TO_CHAR 函数。

四、应用场景

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

nvl2() 函数的应用场景也比较多,常用于根据查询的值返回不同的结果。

例如1:查询性别。

select nvl2(gender, '男', '女') as sex from student; 

例:2:用列转行函数 vm_concat 查询一个用户和他的账号显示为 用户名a(账号b)  效果。

假如b参数为空的情况就会出现“a()”的参数,而我想要的是b参数为空的情况,直接返回“a”参数,b参数不为空的情况才返回“a(b)”类型的数据,通过nvl2函数就可以很好的实现:

select to_char(wm_concat(nvl2(b, a || '(' || b || ')', a))) as 返回参数 from test01 where id = 1;
  • 0
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dreaming317

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值