oracle if 使用函数,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 fromdual;--expr1不为空,返回expr1, 结果:1 --

select NVL('1','2') SexType from dual;

1.3)实际应用:

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

--未加函数时情况 --

select A.UseFlag 使用标志,A.NAME 单据名称 from Dxc_Receive_Notice A

47d0c4cea69b37d4e1f3e8bcf3a38457.png

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

--加函数时情况,要求(field 为null,返回0 ;field 不为null,返回本身) --

select NVL(A.UseFlag,'0') 使用标志,A.NAME 单据名称 from Dxc_Receive_Notice A

7b4cc44728eeabd6c3dda5d09ca66d86.png

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) fromdual;--为null时,返回expr3 ,结果:2

select NVL2(null,1,2) from dual;

2.3)实际应用

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

--未加函数时情况 --

select A.UseFlag 使用标志,A.NAME 单据名称 from Dxc_Receive_Notice A

622c6d4eeecfbf281300534acdcda3d5.png

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

--应用到实际查询中,要求(field 为null,返回0; field 不为null,返回本身)

select NVL2(A.UseFlag,A.UseFlag,'0') 使用标志,A.NAME 单据名称 from Dxc_Receive_Notice A

ae0dd0a169fa1a2cdb515c234a9b2ad6.png

3、NULLIF函数

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

3.2)用法:

--相等时,返回结果: null --

select NULLIF(1,1) fromdual;--不相等时,返回结果: 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

ef41927167e90c7a26f557ad1abcb0db.png

若字段不为‘‘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

f9243cd6b819546e65881f96e5057317.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值