如何检查T-SQL中的整个表(跨所有列)中是否有空值

如何检查T-SQL中的整个表(跨所有列)中是否有空值,sql,tsql,null,Sql,Tsql,Null,我想知道我是否可以运行一个特别的查询来查看一个表在它的任何列中是否包含任何空值。该表有100多个列,因此手动执行此操作将非常痛苦。您可以这样尝试: DECLARE @tb NVARCHAR(255) = N'dbo.[table]'; DECLARE @sql NVARCHAR(MAX) = N'SELECT * FROM ' + @tb + ' WHERE 1 = 0'; SELECT @sql += N' OR ' + QUOTENAME(name) + ' IS NULL'

我想知道我是否可以运行一个特别的查询来查看一个表在它的任何列中是否包含任何空值。该表有100多个列,因此手动执行此操作将非常痛苦。

您可以这样尝试:

DECLARE @tb NVARCHAR(255) = N'dbo.[table]';

DECLARE @sql NVARCHAR(MAX) = N'SELECT * FROM ' + @tb
    + ' WHERE 1 = 0';

SELECT @sql += N' OR ' + QUOTENAME(name) + ' IS NULL'
    FROM sys.columns 
    WHERE [object_id] = OBJECT_ID(@tb);

EXEC sp_executesql @sql;

您可以这样尝试:

DECLARE @tb NVARCHAR(255) = N'dbo.[table]';

DECLARE @sql NVARCHAR(MAX) = N'SELECT * FROM ' + @tb
    + ' WHERE 1 = 0';

SELECT @sql += N' OR ' + QUOTENAME(name) + ' IS NULL'
    FROM sys.columns 
    WHERE [object_id] = OBJECT_ID(@tb);

EXEC sp_executesql @sql;

是否所有(或至少大多数)100+列都允许空值?是否所有(或至少大多数)100+列都允许空值?是否可能重复