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

PostgreSQL查询默认值为NULL的字段返回0行如何解决

问题原因

  • SQL标准中NULL代表未知值,无法使用普通比较运算符(=、!=、<等)和其他值做比较,v1=NULL的判断结果永远为未知,不会命中任何行。
  • LENGTH() 函数传入NULL时,返回结果也是NULL而非0,因此LENGTH(v1)=0的条件也无法匹配v1为NULL的行。

正确查询方案

方案1:仅匹配v1严格为NULL的行(推荐)

使用IS NULL运算符做判断,语句如下:

SELECT id FROM t1 WHERE v1 IS NULL;

执行后即可返回符合要求的id:1、2、3。

方案2:同时匹配NULL和空字符串

如果场景中需要同时命中v1为NULL和v1是空字符串''的情况,可以用COALESCE函数做值转换:

SELECT id FROM t1 WHERE COALESCE(v1, '') = '';

该语句会先把v1的NULL值转换为空字符串,再和空字符串做比较,两种场景都能覆盖。

内容的提问来源于stack exchange,提问作者Kukula Mula

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 02:39:01