sql数据库 | sql语句中使用in、not in 查询时,注意条件范围中的null值处理事项

评论169字数 1117阅读3分43秒阅读模式

sql语句中使用in、not in 查询时,注意条件范围中的null值处理事项

emp表中的数据

sql数据库 | sql语句中使用in、not in 查询时,注意条件范围中的null值处理事项

 

1. 使用in的时候,忽略为null的,不会查询出comm为null的数据

select * from emp e where e.comm in (300, 500, null);

2. 使用not in的时候,如果 not in后面的选项中没有null,只会查询从comm列不为空的列中过滤,会过滤掉comm为null的数据

select * from emp e where e.comm not in (300, 500);

3. 使用not in 的时候,如果not in后面的选项中有null,不会查询出来任何数据。sql语句本身直接返回false,所以使用not in的时候,要保证in中的条件不会出现null的情况,不然可能会出现意想不到的情况。

select * from emp e where e.comm not in (300, 500, null);

 

转载自

sql语句中使用in、not in 查询时,注意条件范围中的null值处理事项 - Java半路人生 - 博客园
https://www.cnblogs.com/rensheng/p/12019782.html

不属于函数 not in,当目标模板数据为空时,为什么失灵?

A not in B的原理是拿A表值与B表值做是否不等的比较, 也就是a != b. 在sql中, null是缺失未知值而不是空值(详情请见MySQL reference).

当你判断任意值a != null时, 官方说, “You cannot use arithmetic comparison operators such as =, <, or <> to test for NULL”, 任何与null值的对比都将返回null. 因此返回结果为否,这点可以用代码 select if(1 = null, 'true', 'false')证实.

从上述原理可见, 当询问 id not in (select p_id from tree)时, 因为p_id有null值, 返回结果全为false, 于是跳到else的结果, 返回值为inner. 所以在答案中,leaf结果从未彰显,全被inner取代.
————————————————
版权声明:本文为CSDN博主「perfect-ws」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/cxywangshun/article/details/126391632

总结

在WorkFine中使用不属于(包含在)时目标模板不能为空,否则无效,

输入验证码查看隐藏内容

扫描二维码关注本站微信公众号 聆听风雨008
或者在微信里搜索 聆听风雨008
回复 11952 获取验证码
wechat 聆听风雨008

部分文章来源于网络  如有侵权请告知本人立即删除!

站长邮箱447800330@qq.com

匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定