Oracle PL/SQL判断两个字段相等或不等

问题描述

今天写sql的时候两个字段值明明不相等(一个空,一个不空),但是判断不相等的时候返回时的是false。


原因分析:

经过测试发现,并不是!=,<>不稳定,而是字段值为null时,不能使用!=或者<>比较值,应该使用IS NULL判断是否为空。所以当 a 或b有一个为null时,下面语句都会失效
a!=b a<>b


解决方案:

为了解决NULL带来的“无法判断相等或不等”的问题,我们可以使用NVL函数解决
NVL函数的功能是实现空值的转换,根据第一个表达式的值是否为空值来返回响应的列名或表达式,主要用于对数据列上的空值进行处理,语法格式如:NVL( string1, replace_with)。
NVL(E1, E2)的功能为:如果E1为NULL,则函数返回E2,否则返回E1本身。
NVL函数返回值类型可以为字符型、日期型、日期时间型、数值型、货币型、逻辑型或nul值,所以很好用。

NVL(a,0)!=NVL(b,0)
NVL(a,0)<>NVL(b,0)
这样写就可以了!

坑无处不在啊!

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值