<>不等号的陷阱

在部门同步的啥时候有一个存储过程,里面有个条件是  a.fid<>b.fid 然后就导致有的部门没用同步

举个简单的例子:

如果你在查询 SELECT a,b,c,d FROM test 中获得的结果是 1, 2, , 4  

然后添加条件SELECT a,b,c,d FROM test WHERE a <> c 查询中,需要注意以下几点

NULL 不等于任何值,包括另一个 NULL。如果 ac 任何一方是 NULLa <> c 将不会返回 TRUE,而是会被认为是 UNKNOWN,因此这行数据不会出现在结果集中 但是确实不等于c

解决方案有好多 case when  分情况,

SELECT abcd
FROM test
WHERE 
  CASE
    WHEN a IS NULL AND c IS NULL THEN 0
    WHEN a IS NULL OR c IS NULL THEN 1
    WHEN a IS NOT NULL AND c IS NOT NULL AND a <> c THEN 1
  END = 1;

COALESCE函数 

SELECT COALESCE(abcd, 'N/A') FROM test;

这里推荐 decode函数

SELECT abcd
FROM test
WHERE 
DECODE(a, NULL, 0, a)<>DECODE(c, NULL, 0 、c)
   
    

decode (1,2,3,4) 就是1字段  跟2比较,等于就是3 不等于就是4

下课

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值