ORACLE中NVL函数及问题解决

1.NVL函数

从两个表达式返回一个非 null 值。 语法 NVL(expression1, expression2) 参数 expression1, expression2 如果 expression1 的计算结果为 null 值,则 NVL( ) 返回 expression2。如果 expression1 的计算结果不是 null 值,则返回 expression1。expression1 和 expression2 可以是任意一种数据类型。如果 expression1 与 expression2 的结果皆为 null 值,则 NVL( ) 返回 .NULL.。 返回值类型 字符型、日期型、日期时间型、数值型、货币型、逻辑型或 null 值。通是expression1,expression2还可以是SELECT语句。

2.NVL2函数

语法NVL(expression0, expression1,expression2) 参数 expression0,expression1, expression2 如果 expression0 的计算结果为 null 值,则 NVL( ) 返回 expression2。如果 eEpression0 的计算结果不是 null 值,则返回 expression1。expression1和expression2类型不同的话,expression2会转换为expression1的类型 返回值类型 字符型、日期型、日期时间型、数值型、货币型、逻辑型或 null 值

3.nullif

NULLIF (expr1, expr2) expr1与expr2相等返回NULL,不等则返回expr1 注意类型要一致 4.decode

decode (expression, search_1, result_1, search_2, result_2, ., search_n, result_n, default)

decode函数比较表达式和搜索字,如果匹配,返回结果;如果不匹配,返回default值;如果未定义default值,则返回空值。

工作中遇到的一个问题

在提取相关数据是,调用了NVL函数,区别是NVL的两个参数都是SELECT语句,运行便报一列返回多值的错误:
在这里插入图片描述
此时,将两个语句都进行排查后发现第二个参数中的SELECT语句报的错,于是乎将第一个SELECT语句修改为查询结果不是NULL,结果还是报同样的错误,反复查询多次,最后将第二个参数的SELECT语句改为0,则运行正常,于是乎在折磨了近半个小时时,得出以下结论:

NVL函数两个参数中任何一个参数为SELECT语句,在调用NVL函数时:先执行SELECT语句后判断时候为空

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值