假设您有一张表atable
,其中列not_nullable
和is_nullable
。由于计数不计算任何东西 - 你可以改为只计算列的空位
SELECT count(*) count_nulls FROM atable WHERE is_nullable is null;
现在如何做到这一点所有可空列?
我想出了这个 - 但它的veeery缓慢。但是,再次 - 你多久需要这样做?
create table #nullcolumns(nullable_column varchar(255), count_nulls int);
declare @sqladd nvarchar(1000);
DECLARE users_cursor CURSOR FOR
SELECT /* TOP 20 */ 'INSERT INTO #nullcolumns SELECT '''+
t.name+'.'+c.name+''' as nullable_column, count(*) from '
+t.name+' WHERE '+c.name+' IS NULL '
FROM sys.tables t
INNER JOIN sys.columns c ON t.object_id = c.object_id
WHERE c.is_nullable = 1
OPEN users_cursor
FETCH NEXT FROM users_cursor
INTO @sqladd
WHILE @@FETCH_STATUS = 0
BEGIN
exec sp_executesql @sqladd;
print @sqladd;
FETCH NEXT FROM users_cursor
INTO @sqladd
END
CLOSE users_cursor
DEALLOCATE users_cursor
SELECT * FROM #nullcolumns;
来源
2015-11-05 14:43:37
Jan