• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

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

武飞扬头像
Darmk
帮助5

问题描述

今天写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)
这样写就可以了!

坑无处不在啊!

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhfggfge
系列文章
更多 icon
同类精品
更多 icon
继续加载