Oracle中nvl()与nvl2()函数详解
Oracle中nvl()与nvl2()函数详解:
- 函数nvl(expression1,expression2)根据参数1是否为null返回参数1或参数2的值;
- 函数nvl2(expression1,expression2,expression3)根据参数1是否为null返回参数2或参数3的值。
1.nvl:根据参数1是否为null返回参数1或参数2的值
【函数格式】:nvl(expression1,expression2)
【函数说明】:
- 若expression1值为null,则该函数返回expression2;
- 若expression1值不为null,则该函数返回expression1;
- 若expression1、expression2的值均为null,则该函数返回null。
【特别说明】:参数expression1和expression2可以是字符型、数字型或日期型,但参数expression1与expression2的类型必须一致。
【样例展示一】:expression1值为null:
- expression2为字符型:
select nvl(null,'ABCD') from dual; --返回:ABCD
select nvl(null,'abcd') from dual; --返回:abcd
select nvl(null,'12345') from dual; --返回:12345
- expression2为数值型:
select nvl(null,12345) from dual; --返回:12345
select nvl(null,00000) from dual; --返回:0
select nvl(null,-12345) from dual; --返回:-12345
select nvl(null,123.45) from dual; --返回:123.45
select nvl(null,-123.45) from dual; --返回:-123.45
- expression2为日期时间型:
select nvl(null,sysdate) from dual; --返回:2022/2/25 11:54:18
select nvl(null,to_date('2022/2/25 11:54:18','yyyy-mm-dd hh24:mi:ss')) from dual; --返回:2022/2/25 11:54:18
select nvl(null,to_date('2022/2/25','yyyy-mm-dd')) from dual; --返回:2022/2/25
select nvl(null,to_date('2022','yyyy')) from dual; --返回:2022/2/1
【样例展示二】:expression1值不为null:
- expression1为字符型:
select nvl('ABCD','abcd') from dual; --返回:ABCD
select nvl('abcd','ABCD') from dual; --返回:abcd
select nvl('12345','54321') from dual; --返回:12345
- expression1为数值型:
select nvl(12345,null) from dual; --返回:12345
select nvl(00000,11111) from dual; --返回:0
select nvl(-12345,null) from dual; --返回:-12345
select nvl(123.45,-123.45) from dual; --返回:123.45
select nvl(-123.45,123.45) from dual; --返回:-123.45
- expression1为日期时间型:
select nvl(sysdate,null) from dual; --返回:2022/2/25 12:18:23
select nvl(to_date('2022/2/25 12:18:23','yyyy-mm-dd hh24:mi:ss'),null) from dual; --返回:2022/2/25 12:18:23
select nvl(to_date('2022/2/25','yyyy-mm-dd'),null) from dual; --返回:2022/2/25
select nvl(to_date('2022','yyyy'),null) from dual; --返回:2022/2/1
【样例展示三】:expression1、expression2值均为null:
select nvl(null,null) from dual; --返回空值
select nvl('',null) from dual; --返回空值
select nvl(null,'') from dual; --返回空值
select nvl('','') from dual; --返回空值
2.nvl2:根据参数1是否为null返回参数2或参数3的值
【函数格式】:nvl2(expression1,expression2,expression3)
【函数说明】:
- 若expression1值不为null,则该函数返回expression2值;
- 若expression1值为null,则该函数返回expression3值;
- 若expression1、expression2、expression3值均为null,则该函数返回null。
【特别说明】:
- expression1的类型不需要与expression2和expression3的类型保持一致;
- expression2与expression3的类型尽量保持一致,若不一致,当expression1为null时,则expression3会自动转换为expression2的类型,若两个数据类型之间无法转换,则会报错。
【样例展示一】:expression1值不为null:
- expression2和expression3均为字符型:
select nvl2(0,'ABCD','abcd') from dual; --返回:ABCD
select nvl2('a','ABCD','1234') from dual; --返回:ABCD
select nvl2(sysdate,'1234','abcd') from dual; --返回:1234
- expression2和expression3均为数值型:
select nvl2(0,12345,54321) from dual; --返回:12345
select nvl2('a',123.45,543.21) from dual; --返回:123.45
select nvl2(sysdate,-12345,-54321) from dual; --返回:-12345
- expression2和expression3数据类型不一致:
注意:此时expression1有值,因此该函数直接返回expression2的值,即使expression3的类型无法转换为expression2的类型也不会报错。
select nvl2(0,'ABCD',54321) from dual; --返回:ABCD
select nvl2('a','abcd',543.21) from dual; --返回:abcd
select nvl2(sysdate,'12345',-54321) from dual; --返回:12345
【样例展示二】:expression1值为null:
- expression2和expression3均为字符型:
select nvl2(null,'ABCD','abcd') from dual; --返回:abcd
select nvl2('','ABCD','1234') from dual; --返回:1234
- expression2和expression3均为数值型:
select nvl2(null,12345,54321) from dual; --返回:54321
select nvl2('',123.45,543.21) from dual; --返回:543.21
- expression2和expression3数据类型不一致:
注意:此时expression1值为null,因此该函数会返回expression3的值,若expression3的类型无法转换为expression2的类型,则会报错。
select nvl2(null,'ABCD',54321) from dual; --返回:54321
select nvl2('','abcd',543.21) from dual; --返回:543.21
select nvl2('',543.21,'abcd') from dual; --执行报错
select nvl2(null,'abcd',sysdate) from dual; --返回:25-2月 -22
select nvl2(null,sysdate,'abcd') from dual; --执行报错
【样例展示三】:expression1为null,且expression2或expression3值为null:
select nvl2(null,null,'123') from dual; --返回:123
select nvl2(null,'abc',null) from dual; --返回:空值
select nvl2(null,null,null) from dual; --返回:空值
select nvl2('','','') from dual; --返回:空值
Oracle中nvl()与nvl2()函数详解相关推荐
- 在oracle中游标的操作,Oracle中的游标和函数详解
Oracle中的游标和函数详解 1.游标 游标是一种 PL/SQL 控制结构:可以对 SQL 语句的处理进行显示控制,便于对表的行数据 逐条进行处理. 游标并不是一个数据库对象,只是存留在内存中. 操 ...
- oracle中正则表达式规则,Oracle中的正则表达式(及函数)详解
1.概述 相信大家对正则表达式都不陌生,从linux下的命令到Java等编程语言,正则表达式无处不在,虽然我们实际使用的时候也并不一定太多,但是当我们要处理字符串时,它确实是一个强大的工具. 上一篇文 ...
- oracle中匹配函数怎么用,Oracle中的正则表达式(及函数)详解
运算符 在介绍函数前,这里先说明一下Oracle中正则表达式运算符及其描述. 如果不知道他们有什么用,或者也不知道描述说的是什么,没关系,可以先看后面的介绍,就知道他们的含义了. 图片.png ora ...
- 创建emp表 oracle,Oracle中创建和管理表详解
Oracle中创建和管理表详解 更新时间:2013年08月01日 15:44:16 作者: 以下是对Oracle中的创建和管理表进行了详细的分析介绍,需要的朋友可以过来参考下 SQL> /* ...
- Oracle中游标Cursor基本用法详解
这篇文章主要介绍了Oracle中游标Cursor基本用法详解,还是比较全面的,具有一定参考价值,需要的朋友可以了解下. 查询 SELECT语句用于从数据库中查询数据,当在PL/SQL中使用SELECT ...
- python平方数迭代器_对python中的高效迭代器函数详解
python中内置的库中有个itertools,可以满足我们在编程中绝大多数需要迭代的场合,当然也可以自己造轮子,但是有现成的好用的轮子不妨也学习一下,看哪个用的顺手~ 首先还是要先import一下: ...
- Oracle中序列(Sequence)详解
Oracle中序列(Sequence)详解 一 序列定义 序列(SEQUENCE)是序列号生成器,可以为表中的行自动生成序列号,产生一组等间隔的数值(类型为数字).不占用磁盘空间,占用内存. 其主要用 ...
- pythonpandas函数详解_对pandas中Series的map函数详解
Series的map方法可以接受一个函数或含有映射关系的字典型对象. 使用map是一种实现元素级转换以及其他数据清理工作的便捷方式. (DataFrame中对应的是applymap()函数,当然Dat ...
- 转:linux中fork()函数详解
转:linux中fork()函数详解 https://blog.csdn.net/jason314/article/details/5640969 转载于:https://www.cnblogs.co ...
最新文章
- Rendering Problems Exception raised during rendering:
- 新职业风口已至!人社部宣布这10个职业缺口近千万!
- SQLite复杂表的更新方式
- java sql 参数_java jdbc连接数据库,Properties 属性设置参数方法
- OpenCV遮罩相机的实例(附完整代码)
- .net core i上 K8S(六).netcore程序的service网络代理模式
- 微信小程序项目实战之豆瓣天气
- 批量统计多个PPTX文件中幻灯片总数量
- mutiset HDOJ 5349 MZL's simple problem
- python高级语言特长_高级程序设计语言的特点是()
- c语言程序设计双语版答案,C程序设计(双语版)习题答案.doc
- oracle复合结构,动名词的复合结构作宾语
- VLIW技术与嵌入式系统
- Java:javax.mail通过163服务器发送邮件
- 解决SpringBoot项目jar包启动慢
- 高逼格技能教你玩转Excel
- echarts按照时间显示柱状图_Echarts制作时间柱形离散分布图
- Windows下wafw00f的安装
- OpenGL ES 实现瘦身大长腿效果
- vs2017运行yolov4_VS2017运行YOLOv4
热门文章
- 计算机下没有桌面,电脑桌面下面的任务栏没有了怎么办
- 狂奔的在线教育想变得更轻、更薄,D2C商业模式如何打破行业壁垒?
- VS2010旗舰版下载----带SN系列号
- asp.net+C#房地产销售系统文献综述和开题报告+Lw
- FlaskFul返回中文被转义unicode解决方法
- 2 01 | 什么是优秀的产品经理?
- 华为和小米比拼性价比,OPPO和vivo再被诟病低配高价
- Can not set double field cn.ac.iie.entity.UliInfo.latitude to null value
- PYNQ-Z2快速上手教程
- 用flash给人物侧面绘画