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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

oracle函数NVL,NVL2和NULLIF之间的区别和使⽤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 eFlag 使⽤标志, 单据名称 from Dxc_Receive_Notice A
若字段不为null,直接返回字段本⾝
--加函数时情况,要求(field 为null,返回0 ;field 不为null,返回本⾝) --
select NVL(eFlag,'0') 使⽤标志, 单据名称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 eFlag 使⽤标志, 单据名称 from Dxc_Receive_Notice A
若字段不为null,直接返回字段本⾝
--应⽤到实际查询中,要求(field 为null,返回0; field 不为null,返回本⾝)
select NVL2(eFlag,eFlag,'0') 使⽤标志, 单据名称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 收货⽇期, 单据名称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')) 收货⽇期, 单据名称from Dxc_Receive_Notice A。

相关文档
最新文档