NVL函数
语法
NVL(expr1, expr2)

用途
简单来说,就是用于替换字段的null值;
- 如果expr1为空,则nvl函数返回expr2的值;
- 如果expr1不为空,则nvl返回expr1的值;
例子
以官方文档为例,当COMMISSION字段为空时,COMMISSION的值显示为Not Applicable
SELECT last_name, NVL(TO_CHAR(commission_pct), 'Not Applicable')
"COMMISSION" FROM employees
WHERE last_name LIKE 'B%'
ORDER BY last_name;
LAST_NAME COMMISSION
------------------------- ----------------------------------------
Baer Not Applicable
Baida Not Applicable
Banda .1
Bates .15
Bell Not Applicable
Bernstein .25
Bissot Not Applicable
Bloom .2
Bull Not Applicable
注意事项
- 如果expr1为字符型,expr2非字符型时,oracle会先将expr2转换为字符型,再返回expr1的值;
- 如果expr1是数值型的,那么Oracle将确定哪个参数的数值优先级最高,然后隐式地将另一个参数转换为该数据类型,并返回该数据类型。

例如:当expr1为数值型,expr2为字符串类型,则隐式转换expr2为数值型,如果无法转换,则会报错:
SQL> select nvl(1,'2') from dual;
NVL(1,'2')
----------
1
SQL> select nvl(1,'test') from dual;
select nvl(1,'test') from dual
*
ERROR at line 1:
ORA-01722: invalid number
所以,使用NVL函数,要尽量保证两个参数的数据类型一致;
参考文档
- https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions105.htm
- https://docs.oracle.com/cd/B19306_01/server.102/b14200/sql_elements001.htm#i156865
最后修改时间:2021-08-16 20:49:03
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




