2016-09-05 52 views
-1

我試圖找到一種方法來顯示只有列中有值的列。但由於我的數據庫包含數十列,我不想事先指定我需要的列。 我在尋找一個查詢,如:用於刪除所有完全空列的SQL查詢

select * from table_name where column_has_non_null_data_somewhere 

例子:

enter image description here

感謝

+0

SQL查詢具有固定數量的列,在'SELECT'子句中定義。如果你想要可變數量的列,那麼你需要使用動態SQL。 –

+2

我會考慮重新設計數據庫。 – jarlh

+0

你能告訴我們你的輸出應該是什麼樣子嗎? –

回答

1

你可以試試下面消除所有空或null值的列的方式。

假設你有;

SELECT * FROM Filter 

輸出:

A  B  C  D 
NULL NULL NULL NULL 
NULL 1  NULL NULL 
NULL 1  NULL NULL 
NULL 1  NULL NULL 
1  1  0  NULL 

嘗試:

IF ((SELECT COUNT(A) FROM Filter) < 1) 
    SELECT B, C, D FROM Filter 
ELSE IF ((SELECT COUNT(B) FROM Filter) < 1) 
    SELECT A, C, D FROM Filter 
ELSE IF ((SELECT COUNT(C) FROM Filter) < 1) 
    SELECT A, B, D FROM Filter 
ELSE IF ((SELECT COUNT(D) FROM Filter) < 1) 
    SELECT A, B, C FROM Filter 

輸出:

A  B  C 
NULL NULL NULL 
NULL 1  NULL 
NULL 1  NULL 
NULL 1  NULL 
1  1  0 
+0

嘿@Reyan,謝謝你的回覆。正如我在原始問題中提到的那樣,我正在尋找一種應用過濾器而不指定列名的方法,這是因爲我的表有大量的列。 –

+0

還沒有@Reyan。 –