NVL2 函数
语法
NVL2(expr1, expr2, expr3)

用途
根据指定的表达式是否为空来确定查询返回的值;
- 如果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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




