是否有一种简单的方法可以计算表中所有字段中的空值,而无需编写40多个非常相似但略有不同的查询?我认为所有表格都有某种统计数据,这可能是最简单的方法,但我不确定。思绪,有人吗?谢谢!
BTW,我正在使用SQL Server 2008。
答案 0 :(得分:1)
SELECT COUNT( CASE WHEN field01 IS NULL THEN 1 END) +
COUNT( CASE WHEN field02 IS NULL THEN 1 END) +
...
COUNT( CASE WHEN field40 IS NULL THEN 1 END) as total_nulls
答案 1 :(得分:1)
此answer将返回一个表,其中包含指定表的每列的名称。 (@tab是您尝试计算NULL的表的名称。)
您可以循环遍历列名,计算每列中的NULL,并将结果添加到总运行计数中。
答案 2 :(得分:1)
不确定您是否认为这很简单,但这会在表格中按列总计NULL。
DECLARE @table sysname;
SET @table = 'MyTable'; --replace this with your table name
DECLARE @colname sysname;
DECLARE @sql NVARCHAR(MAX);
DECLARE COLS CURSOR FOR
SELECT c.name
FROM sys.tables t
INNER JOIN sys.columns c ON t.object_id = c.object_id
WHERE t.name = @table;
SET @sql = 'SELECT ';
OPEN COLS;
FETCH NEXT FROM COLS INTO @colname;
WHILE @@FETCH_STATUS = 0
BEGIN
SET @sql = @sql + 'COUNT(CASE WHEN ' + @colname + ' IS NULL THEN 1 END) AS ' + @colname + '_NULLS,'
FETCH NEXT FROM COLS INTO @colname;
END;
CLOSE COLS;
DEALLOCATE COLS;
SET @sql = LEFT(@sql,LEN(@sql) - 1) --trim tailing ,
SET @sql = @sql + ' FROM ' + @table;
EXEC sp_executesql @sql;