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

如何筛选出所有列均为NULL值的数据行?

筛选所有列均为NULL的行的简便方法

针对30列的表,手动逐个写column IS NULL确实低效,这里分几种常用数据库给出高效解决方案:

PostgreSQL

PostgreSQL支持直接判断整行是否全为NULL,一行语句就能搞定:

SELECT *
FROM TABLE1 t
WHERE row(t.*) IS NULL;

MySQL/MariaDB

可以通过系统表自动生成查询语句,完全不用手动列所有列:

  1. 先执行以下语句生成完整查询:
SELECT CONCAT('SELECT * FROM TABLE1 WHERE ', GROUP_CONCAT(column_name, ' IS NULL SEPARATOR ' AND ' ')) AS full_query
FROM information_schema.columns
WHERE table_schema = '你的数据库名称' AND table_name = 'TABLE1';
  1. 把查询结果里的full_query值复制出来直接运行,就能得到所有全NULL的行。

或者用COALESCE的方式生成语句:

SELECT CONCAT('SELECT * FROM TABLE1 WHERE COALESCE(', GROUP_CONCAT(column_name SEPARATOR ', '), ') IS NULL;') AS full_query
FROM information_schema.columns
WHERE table_schema = '你的数据库名称' AND table_name = 'TABLE1';

SQL Server

利用sys.columns系统视图生成查询语句:

SELECT 'SELECT * FROM TABLE1 WHERE ' + STRING_AGG(QUOTENAME(name) + ' IS NULL', ' AND ') AS full_query
FROM sys.columns
WHERE object_id = OBJECT_ID('TABLE1');

执行后复制生成的full_query运行即可。

另外,如果你想用COALESCE的方式,也可以直接从数据库客户端导出表的所有列名,复制后用逗号分隔放进COALESCE里——大部分客户端(如DBeaver、Navicat)都支持一键复制列名,比手动输入快很多:

SELECT *
FROM TABLE1
WHERE COALESCE(col1, col2, col3, ..., col30) IS NULL;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 19:10:33