暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle NVL2 函数学习

原创 大道至简 2021-08-04
1754

NVL2 函数

语法

NVL2(expr1, expr2, expr3)
复制

nvl2.gif

用途

根据指定的表达式是否为空来确定查询返回的值;

  • 如果expr1为空,则NVL2返回expr3
  • 如果expr1不为空,则NVL2返回expr2

对比NVL和NVL2来看,只要判断条件为Null,函数就会返回最后一个参数的值;

例子

官方文档示例

 NVL2(commission_pct, salary + (salary * commission_pct), salary)
复制
  • 如果commission_pct为空,则返回salary的值
  • 如果commission_pct不为空,则返回:salary + (salary * commission_pct)
SELECT last_name, salary,
       NVL2(commission_pct, salary + (salary * commission_pct), salary) income
  FROM employees
  WHERE last_name like 'B%'
  ORDER BY last_name;

LAST_NAME                     SALARY     INCOME
------------------------- ---------- ----------
Baer                           10000      10000
Baida                           2900       2900
Banda                           6200       6820
Bates                           7300       8395
Bell                            4000       4000
Bernstein                       9500      11875
Bissot                          3300       3300
Bloom                          10000      12000
Bull                            4100       4100
复制

注意事项

参数expr1的数据类型没有限制;参数expr2和expr3除了LONG不能用,其他都可以。

  • 如果expr2是字符数据,Oracle数据库会在返回值之前将expr3转换为expr2的数据类型,expr3为空时不需要转换。
  • 如果expr2是数字数据,那么Oracle数据库将确定哪个参数具有最高的数字优先级,并隐式地将另一个参数转换为该数据类型,并返回该数据类型。

参考文档

https://docs.oracle.com/cd/E11882_01/server.112/e41084/functions120.htm#SQLRF00685

最后修改时间:2021-08-16 20:48:51
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论