Если я правильно понял, вы хотите проверить, являются ли все строки пустыми или пустыми в данном столбце.Он не должен сообщать о столбце, где есть только некоторые пустые или пустые поля?
Вы можете использовать NOT EXISTS
для этого.Проверьте, не существует ли строк, где столбец не пустой, не нулевой.
SELECT '<column_name>' column_name
WHERE NOT EXITS (SELECT *
FROM elbat
WHERE isnull(<column_name>, '') <> '');
Если вы хотите считать столбцы, которые также состоят только из пробелов, используйте rtrim()
в дополнение к лишению пробелов перед проверкой на равенство с пустой строкой.
SELECT '<column_name>' column_name
WHERE NOT EXITS (SELECT *
FROM elbat
WHERE rtrim(isnull(<column_name>, '')) <> '');
Замените <column_name>
на ваше фактическое имя столбца.
Чтобы повторно использовать его для несколькихимена столбцов, вам придется использовать динамический SQL.Создайте запрос как nvarchar
, вставив нужное имя столбца в правильные места и выполнив его с помощью EXECUTE
или sp_executesql
.
. Вы можете получитьимена столбцов вашей таблицы из каталога.
SELECT c.name
FROM sys.columns c
INNER JOIN sys.tables t
ON t.object_id = c.object_id
INNER JOIN sys.schemas s
ON s.schema_id = t.schema_id
WHERE s.name = '<schema_name>'
AND t.name = '<table_name>';
Замените <schema_name>
на имя вашей схемы и <table_name>
на имя таблицы.
Используйте курсор зациклить результаты из каталога.