Count number of NULL values in each column in SQL

前端 未结 4 396
Happy的楠姐
Happy的楠姐 2020-12-10 08:07

I am trying to write a script that will show the number of non-null values in each column as well as the total number of rows in the table.

I have found a couple wa

4条回答
  •  -上瘾入骨i
    2020-12-10 08:34

    As Paolo said, but here is an example:

    DECLARE @TableName VARCHAR(512) = 'invoiceTbl';
    DECLARE @SQL VARCHAR(1024);
    WITH SQLText AS (
        SELECT 
            ROW_NUMBER() OVER (ORDER BY c.Name) AS RowNum,
            'SELECT ''' + c.name + ''', SUM(CASE WHEN ' + c.Name + ' IS NULL THEN 1 ELSE 0 END) AS NullValues FROM ' + @TableName AS SQLRow
        FROM 
            sys.tables t 
            INNER JOIN sys.columns c ON c.object_id = t.object_id
        WHERE 
            t.name = @TableName),
    Recur AS (
        SELECT
            RowNum,
            CONVERT(VARCHAR(MAX), SQLRow) AS SQLRow
        FROM
            SQLText
        WHERE
            RowNum = 1
        UNION ALL
        SELECT
            t.RowNum,
            CONVERT(VARCHAR(MAX), r.SQLRow + ' UNION ALL ' + t.SQLRow)
        FROM
            SQLText t
            INNER JOIN Recur r ON t.RowNum = r.RowNum + 1
        )
    SELECT @SQL = SQLRow FROM Recur WHERE RowNum = (SELECT MAX(RowNum) FROM Recur);
    EXEC(@SQL);
    

提交回复
热议问题