SQL中NULL值的比较

现象

首先,我们往测试表a中,插入几条测试数据:

INSERT INTO a VALUES ('1'),(NULL),('');
SELECT * FROM a;

得到如下结果:


其次,我们查询表a中id列不为1的数据:

SELECT * FROM a WHERE id <> '1';

结果却只有1条符合条件的数据:

我们预期的结果是有两条,分别是NULL和空字符''
可测试结果却少了NULL这条。这表明SQL对NULL的处理存在特殊的逻辑。

验证

我们重新写SQL:

SELECT * FROM a WHERE id <> '1' OR id IS NULL;

这回,结果符合我们的预期:


结论

对NULL进行判断处理时,只能采用IS NULL或IS NOT NULL,而不能采用=, <, <>, !=这些操作符!

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容