2014-10-09 5 views
0

Я пытаюсь проверить нулевые значения или пустые столбцы.SQL - Пустое или нулевое поля

SELECT * FROM myTable 
WHERE myColumn IS NULL OR myColumn = ' '; 

Дело в том, я хочу, чтобы включить несколько таблиц (myTable1, myTable2, myTable3) в том же запросе, и избежать необходимости указывать имя столбца (MyColumn) поэтому запрос является общим, как это возможно возвращение имена пустых или нулевых столбцов в нескольких таблицах.

Заранее спасибо.

+0

вам необходимо включить имена, если вы хотите, чтобы упростить выражение, вы можете использовать SELECT * FROM MyTable WHERE Coalesce (MyColumn, '') = '' – radar

ответ

0
DECLARE @col VARCHAR(255), 
     @table VARCHAR(255), 
     @cmd VARCHAR(max) 
DECLARE getinfo CURSOR FOR 
    SELECT t.name, 
     c.name 
    FROM sys.tables t 
     JOIN sys.columns c 
      ON t.Object_ID = c.Object_ID 
    WHERE t.Name IN ('table-1', 'table-2') 

--WHERE t.Name IN (provide your TABLE list) 
OPEN getinfo 

FETCH NEXT FROM getinfo INTO @table, @col 

WHILE @@FETCH_STATUS = 0 
    BEGIN 
     SELECT @cmd = 'IF EXISTS (SELECT top 1 * FROM ' + @table 
        + ' WHERE (' + @col + ' IS NULL or ' + @col 
        + '='''')) BEGIN print ''tablename=''+''' 
        + @table + '''+'' column name=''+''' + @col 
        + ''' end' 

     --PRINT @cmd 

     EXEC(@cmd) 
     FETCH NEXT FROM getinfo INTO @table, @col 
    END 

CLOSE getinfo 

DEALLOCATE getinfo 
+0

Спасибо за этот Parthiban. Я попытался записать список имен таблиц в разделе WHERE t.Name IN (table1, table2, table3) и получил сообщение об ошибке «Недопустимое имя столбца» table1. Когда вы пытаетесь использовать одиночную таблицу decleation Где t.name = 'table1', она отлично работает ... любым способом? – entrup

+0

Не могли бы вы рассказать мне, в каком формате вы использовали в разделе IN. Я имею в виду, что значения, которые вы указали, должны быть в одинарных кавычках. – StackUser

+0

2008 R2 SQL Management Suite – entrup

Смежные вопросы