Как проверить, является ли столбец пустым или пустым ('') для всех существующих строк? - PullRequest
0 голосов
/ 18 мая 2018

У меня есть таблица с более чем 100 свободными полями.Я хочу создать скрипт, который проверяет, является ли столбец нулевым или пустым для всех присутствующих строк.

Как мне это сделать?Я хотел бы впоследствии сделать его динамическим, чтобы он мог делать это для каждого столбца и вставлять имя столбца во временную таблицу, чтобы показать, какие из них можно использовать.

1 Ответ

0 голосов
/ 18 мая 2018

Если я правильно понял, вы хотите проверить, являются ли все строки пустыми или пустыми в данном столбце.Он не должен сообщать о столбце, где есть только некоторые пустые или пустые поля?

Вы можете использовать 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> на имя таблицы.

Используйте курсор зациклить результаты из каталога.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...