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

如何查询表中一行内包含至少一个NULL值的记录?

问题原因

你写的SQL本身语法没有报错,但逻辑不符合你的需求,这是PostgreSQL中行表达式IS NULL的语义规则决定的:

  • 行表达式 <table> IS NULL 的返回结果为真,当且仅当这一行的所有字段值都为NULL,只有全空行才会被匹配到,自然和你要的「至少有一个字段为NULL」的筛选要求不符。

正确写法

针对PostgreSQL 13.4版本,你可以直接用下面的语句实现需求:

SELECT *
FROM <table>
WHERE NOT (<table> IS NOT NULL);

这个写法的逻辑很好理解:

  • <table> IS NOT NULL 为真的前提是当前行所有字段都不为NULL,对这个条件取反,得到的就是「至少有一个字段为NULL」的行,完全匹配你的需求。

如果你想要更直观的写法,也可以用下面的等效语句:

SELECT *
FROM <table>
WHERE (<table> IS DISTINCT FROM <table>);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 19:24:03