码迷,mamicode.com
首页 > 数据库 > 详细

oracle函数NVL,NVL2和NULLIF之间的区别和使用

时间:2018-07-09 19:23:11      阅读:204      评论:0      收藏:0      [点我收藏+]

标签:添加   直接   img   用法   区别   日期类型   height   dual   技术分享   

oracle用这么几个函数,可以帮助我们解决数据上null或0的处理

1、NVL()函数

 1.1)介绍:NVL(expr1,expr2),若expr1为null, 返回expr2; 不为null,返回expr1。  注意:两者类型要一致

 1.2)用法:

--expr1为空,返回expr2,结果:‘未知‘--
select NVL(null,未知) SexType from dual;
--expr1不为空,返回expr1, 结果:1 --
select NVL(1,2) SexType from dual;

 1.3)实际应用:

如:我们查询表数据出现这种结果,某个字段若为null,返回0

--未加函数时情况 --
select A.UseFlag 使用标志,A.NAME 单据名称 from Dxc_Receive_Notice A

技术分享图片

若字段不为null,直接返回字段本身

--加函数时情况,要求(field 为null,返回0 ;field 不为null,返回本身) --
select NVL(A.UseFlag,0‘) 使用标志,A.NAME 单据名称 from Dxc_Receive_Notice A

 技术分享图片

 

2、NVL2 函数

2.1)介绍:NVL2 (expr1, expr2, expr3),若expr1不为NULL,返回expr2 ;为NULL,返回expr3。注意:expr2 和expr3 类型不同的话,expr3 会转换为expr2 的类型

2.2)用法:

  --不为null时,返回expr2 ,结果:1
  select NVL2(0,1,2) from dual;
 --为null时,返回expr3 ,结果:2
 select NVL2(null,1,2) from dual;

2.3)实际应用

将查询结果中字段若为null,返回0

--未加函数时情况 --
select A.UseFlag 使用标志,A.NAME 单据名称 from Dxc_Receive_Notice A

技术分享图片

若字段不为null,直接返回字段本身

 --应用到实际查询中,要求(field 为null,返回0; field 不为null,返回本身)
 select NVL2(A.UseFlag,A.UseFlag,0) 使用标志,A.NAME 单据名称 from Dxc_Receive_Notice A

技术分享图片

 

3、NULLIF函数

3.1)介绍:NULLIF (expr1, expr2),若expr1和expr2相等,返回NULL;不相等,等返回expr1

3.2)用法:

--相等时,返回结果: null --
 select NULLIF(1,1) from dual;
  --不相等时,返回结果: 1 --
 select NULLIF(1,2) from dual;

 3.3)实际应用

 将查询结果中字段为‘0001/1/1’,返回null

 --未加函数查询结果 要求(将日期类型默认‘0001/1/1‘,改成null,不相等,返回本身日期)---
 select A.RECEIVEDATE 收货日期,A.NAME 单据名称 from Dxc_Receive_Notice A

技术分享图片

若字段不为‘‘0001/1/1’,返回字段本身

 --添加函数查询结果,要求(将日期类型默认‘0001/1/1‘,改成null,不相等,返回本身日期)--
  select NULLIF(A.RECEIVEDATE,TO_DATE(0001/1/1,yyyy-mm-dd hh24:mi:ss)) 收货日期,A.NAME 单据名称 from Dxc_Receive_Notice A

技术分享图片

 

oracle函数NVL,NVL2和NULLIF之间的区别和使用

标签:添加   直接   img   用法   区别   日期类型   height   dual   技术分享   

原文地址:https://www.cnblogs.com/xielong/p/9285147.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!