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

Oracle NVL 函数学习

原创 大道至简 2021-08-03
2006

NVL函数

语法

NVL(expr1, expr2)
复制

nvl.gif

用途

简单来说,就是用于替换字段的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
复制

注意事项

  1. 如果expr1为字符型,expr2非字符型时,oracle会先将expr2转换为字符型,再返回expr1的值;
  2. 如果expr1是数值型的,那么Oracle将确定哪个参数的数值优先级最高,然后隐式地将另一个参数转换为该数据类型,并返回该数据类型。
    2021080317.jpg
    例如:当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进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论