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

PostgreSQL中!~*运算符对NULL值不生效的原因咨询

为什么NULL记录会被WHERE tasks.description !~* 'test'过滤

在SQL的逻辑判断体系里,NULL代表“未知值”,它和任何值进行比较(包括!~*这类正则匹配操作)的结果既不是TRUE也不是FALSE,而是UNKNOWN。

WHERE子句的核心规则是:仅保留判断结果为TRUE的数据行,结果为UNKNOWN或FALSE的行都会被过滤。

当tasks.description为NULL时,tasks.description !~* 'test'这个表达式的计算结果是UNKNOWN,所以对应的记录会被WHERE子句排除,这就是你看到NULL记录被过滤的根本原因。

你后续修改的WHERE tasks.description !~* 'test' OR tasks.description IS NULL是正确的解决方案,因为tasks.description IS NULL会明确返回TRUE,让NULL记录满足查询条件被保留。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 17:05:53