SQL关于null的坑

根据我们的常规逻辑,集合a与集合!a就构成了一个全集,但在SQL中,我们会发现真理也是相对的。

场景一:对于table  user的数据如下:

其中用户“DDD”的年龄未知,当我们执行如下两句SQL:

1)select *  from user where age>=18;

2)  select *  from user where age<18;

结果分别如下:

 

查看两个结果,是不是发现很奇怪,结果1和结果2相加居然不是全集(少了用户DDD),可能因为是比较数值,大家还比较好理解,不容易入坑,那就看下面两行SQL(典型的a与!a的关系):

场景二:

1) select * from user where age in (18,30);

2) select *  from user where age not in (18,30);

相信直接看这两行脚本,大家肯定认为结果1是用户“AAA”和“CCC”,结果2是用户"BBB"和用户“DDD”,但实际并非如此,如下图:

sql看起来是a与!a都关系,但他们的结果集的并集却并不是全集,null跳出五行之外,不在三界之中!

所以注意null带来的坑!

 

欢迎转载,但请标明来源,谢谢!

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值