имя столбца не может быть пустым , но если вы имеете в виду обнуляемый столбец (столбец, который принимает нулевое значение), который имеет по крайней мере нулевое значение, поэтому вы можете использовать следующий оператор:
declare @schema varchar(255), @table varchar(255), @col varchar(255), @cmd varchar(max)
DECLARE getinfo cursor for
SELECT schema_name(tab.schema_id) as schema_name,tab.name , col.name from sys.tables as tab
inner join sys.columns as col on tab.object_id = col.object_id
where col.is_nullable =1
order by schema_name(tab.schema_id),tab.name,col.name
OPEN getinfo
FETCH NEXT FROM getinfo into @schema,@table,@col
WHILE @@FETCH_STATUS = 0
BEGIN
set @schema = QUOTENAME(@schema)
set @table = QUOTENAME(@table)
set @col = QUOTENAME(@col)
SELECT @cmd = 'IF EXISTS (SELECT 1 FROM '+ @schema +'.'+ @table +' WHERE ' + @col + ' IS NULL) BEGIN SELECT '''+@schema+''' as schemaName, '''+@table+''' as tablename, '''+@col+''' as columnName, * FROM '+ @schema +'.'+ @table +' WHERE ' + @col + ' IS NULL end'
EXEC(@cmd)
FETCH NEXT FROM getinfo into @schema,@table,@col
END
CLOSE getinfo
DEALLOCATE getinfo
которые используют курсор на всех nullable columns
в каждом table
в базе данных, затем проверьте, имеет ли этот столбец хотя бы одно нулевое значение, если да, выберите Имя схемы, имя таблицы, имя столбца и все записи, имеющие нулевое значение в этом столбце
, но если вы хотите получить только количество нулей, вы можете использовать следующий оператор:
declare @schema varchar(255), @table varchar(255), @col varchar(255), @cmd varchar(max)
DECLARE getinfo cursor for
SELECT schema_name(tab.schema_id) as schema_name,tab.name , col.name from sys.tables as tab
inner join sys.columns as col on tab.object_id = col.object_id
where col.is_nullable =1
order by schema_name(tab.schema_id),tab.name,col.name
OPEN getinfo
FETCH NEXT FROM getinfo into @schema,@table,@col
WHILE @@FETCH_STATUS = 0
BEGIN
set @schema = QUOTENAME(@schema)
set @table = QUOTENAME(@table)
set @col = QUOTENAME(@col)
SELECT @cmd = 'IF EXISTS (SELECT 1 FROM '+ @schema +'.'+ @table +' WHERE ' + @col + ' IS NULL) BEGIN SELECT '''+@schema+''' as schemaName, '''+@table+''' as tablename, '''+@col+''' as columnName, count(*) as nulls FROM '+ @schema +'.'+ @table +' WHERE ' + @col + ' IS NULL end'
EXEC(@cmd)
FETCH NEXT FROM getinfo into @schema,@table,@col
END
, который использует курсор на всех nullable columns
в каждом table
в базе данных, затем проверьте, имеет ли этот столбец хотя бы одно нулевое значение, если да, выберите Имя схемы, имя таблицы, имя столбца и подсчитайте все записи, имеющие нулевое значение в этом столбце