You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL中NULL值查询返回计数为0的问题求助

解决PostgreSQL中NULL值计数为0的问题

哦,这个坑我见太多了!你遇到的是SQL处理NULL值的经典误区——NULL不能用普通的=运算符来判断。

问题根源

在SQL的逻辑体系里,NULL代表的是「未知值」,而不是一个具体的数值或字符串。所以任何和NULL做=比较的结果都会是NULL(逻辑上等同于不成立),哪怕是NULL = NULL也不会返回true。这就导致你原来的查询语句中,user = (NULL)这个条件永远匹配不到任何数据,最终计数自然是0。

正确的查询语句

要判断字段是否为NULL,必须使用SQL标准的IS NULL语法,修改后的语句如下:

SELECT count(*) FROM database.table WHERE place_id = 3 AND user IS NULL;

额外补充

如果是在PostgreSQL中,还有一种备选写法(不过一般没必要,优先用上面的标准写法更清晰):

SELECT count(*) FROM database.table WHERE place_id = 3 AND user IS NOT DISTINCT FROM NULL;

IS NOT DISTINCT FROM会把NULL视为可比较的相等值,但对于单纯判断NULL的场景,IS NULL是更直观、更符合SQL规范的选择。

记住这个小口诀:判断NULL用IS,别用等于号,以后就不会再踩这个坑啦!

内容的提问来源于stack exchange,提问作者SUPARNA SOMAN

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:17:38