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

MS SQL Server如何按列统计指定表各字段NULL值并透视返回结果

MS SQL Server 动态统计表各列NULL值数量实现方案

完全不需要逐列手写UNION语句,通过系统视图INFORMATION_SCHEMA.COLUMNS读取表的列元数据,动态拼接统计逻辑即可,适配SSMS所有主流SQL Server版本。

高版本通用写法(SQL Server 2017及以上)

利用STRING_AGG快速拼接统计语句,替换代码中库名、schema、表名参数后直接执行,即可返回column_name、null_count两列的统计结果:

-- 替换下方三个变量为实际业务值
DECLARE @DatabaseName NVARCHAR(128) = N'你的目标数据库名'
DECLARE @SchemaName NVARCHAR(128) = N'dbo'
DECLARE @TableName NVARCHAR(128) = N'你的目标表名'
DECLARE @ExecSQL NVARCHAR(MAX)

SELECT @ExecSQL = STRING_AGG(
    N'SELECT ''' + COLUMN_NAME + ''' AS column_name,
        SUM(CASE WHEN ' + QUOTENAME(COLUMN_NAME) + N' IS NULL THEN 1 ELSE 0 END) AS null_count
      FROM ' + QUOTENAME(@DatabaseName) + N'.' + QUOTENAME(@SchemaName) + N'.' + QUOTENAME(@TableName),
    N' UNION ALL '
)
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_CATALOG = @DatabaseName
  AND TABLE_SCHEMA = @SchemaName
  AND TABLE_NAME = @TableName

-- 可先打印生成的SQL校验逻辑,确认无误后再执行
PRINT @ExecSQL
EXEC sp_executesql @ExecSQL

低版本兼容写法(SQL Server 2016及更早)

低版本没有STRING_AGG函数,可通过FOR XML PATH实现字符串拼接,逻辑和返回结果和高版本写法完全一致:

DECLARE @DatabaseName NVARCHAR(128) = N'你的目标数据库名'
DECLARE @SchemaName NVARCHAR(128) = N'dbo'
DECLARE @TableName NVARCHAR(128) = N'你的目标表名'
DECLARE @ExecSQL NVARCHAR(MAX)

SELECT @ExecSQL = STUFF((
    SELECT N' UNION ALL SELECT ''' + COLUMN_NAME + ''' AS column_name,
        SUM(CASE WHEN ' + QUOTENAME(COLUMN_NAME) + N' IS NULL THEN 1 ELSE 0 END) AS null_count
      FROM ' + QUOTENAME(@DatabaseName) + N'.' + QUOTENAME(@SchemaName) + N'.' + QUOTENAME(@TableName)
    FROM INFORMATION_SCHEMA.COLUMNS
    WHERE TABLE_CATALOG = @DatabaseName
      AND TABLE_SCHEMA = @SchemaName
      AND TABLE_NAME = @TableName
    FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)'), 1, 11, '')

PRINT @ExecSQL
EXEC sp_executesql @ExecSQL

注意事项

  • 用UNION ALL替代原生写法里的UNION,因为每段统计的列名唯一,不需要去重,执行效率更高
  • 所有标识符用QUOTENAME()包裹,避免列名、表名包含空格、特殊字符、SQL关键字时执行报错
  • 如果需要调整统计逻辑(比如同时统计空字符串数量),只需要修改拼接模板里的CASE判断逻辑即可,所有列会自动适配新规则

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 14:48:16