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

如何查询数据库表中各列的非空记录数及对应列名?

解决方案

要统计目标表中每个字段的非空记录数,你需要生成动态SQL来逐个字段计算COUNT(列名)(COUNT(列名)会自动忽略NULL值,正好匹配你要的"有效记录数"需求)。以下是主流数据库的实现方式:

MySQL/MariaDB

利用INFORMATION_SCHEMA.COLUMNS拼接动态SQL后执行:

SET @table_name = 'Table_Name';
SET @sql = NULL;

SELECT GROUP_CONCAT(
    'SELECT ''', COLUMN_NAME, ''' AS `Column Name`, COUNT(', COLUMN_NAME, ') AS `Count` FROM ', @table_name
    SEPARATOR ' UNION ALL '
) INTO @sql
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = @table_name
AND TABLE_SCHEMA = DATABASE(); -- 指定当前数据库,避免跨库冲突

PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

SQL Server

通过拼接动态SQL并执行:

DECLARE @table_name NVARCHAR(128) = 'Table_Name';
DECLARE @sql NVARCHAR(MAX) = '';

SELECT @sql += 'SELECT ''' + COLUMN_NAME + ''' AS [Column Name], COUNT(' + COLUMN_NAME + ') AS [Count] FROM ' + @table_name + ' UNION ALL '
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = @table_name
AND TABLE_SCHEMA = SCHEMA_NAME(); -- 指定当前架构

-- 移除最后多余的UNION ALL
SET @sql = LEFT(@sql, LEN(@sql) - 10);

EXEC sp_executesql @sql;

说明

动态SQL会为每个列生成单独的统计语句,再用UNION ALL合并结果,最终输出你需要的Column Name | Count格式。

内容的提问来源于stack exchange,提问作者Marvin Raymund Popioco

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 12:15:06