2014-10-09 49 views
0

我試圖檢查空值或空列。SQL - 空或空字段

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

的事情是,我想包括幾桌(MYTABLE1,myTable2,myTable3)在同一查詢 和避免需要指定列名(myColumn) 所以查詢是通用盡可能恢復幾個表中的空列名或空列名。

在此先感謝。

+0

您需要包括名字,如果你想簡化的表達,你可以使用 SELECT * FROM mytable的 WHERE合併(myColumn, '')= '' – radar 2014-10-09 02:11:10

回答

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'。一旦嘗試使用單個表格刪除其中t.name ='table1'它工作正常......圍繞此任何方式? – entrup 2014-10-10 01:03:20

+0

您能否告訴我您在IN子句中使用了哪種格式。我的意思是你給的價值應該在單引號內。 – StackUser 2014-10-10 06:00:40

+0

2008 R2 SQL管理套件 – entrup 2014-10-16 02:05:49