2013-04-15 110 views
2

我有一個70加列的表。我經常在桌子上搜索一行。SQL查詢只列出結果中的'非空'字段

例:

select * from customer where customer_id='xyz'; 

customer_id是獨一無二的。

在結果中,最有可能是30到40列與空值。

我一直只對非空字段感興趣。

SQL中有沒有辦法只列出那些非空的列?

PS:不幸的是,非空字段對於所有客戶來說都不是相同的字段。假設,如果'客戶A'在'列R'中爲空,則'客戶B'在該列中可能具有有效值。最後,我的查詢將始終只集中在任何給定時間的1位客戶。

簡要例如:

查詢:

select * from customer where cust_id='826122'; 

實際結果:

的cust_id - 826122

cust_fname - 馬大

cust_lname - 凱恩

cust_alt_add - 空

cust_cell_acode - 210

cust_home_phone - 空

預期的結果:(我不想空值的列出現在我的結果)

CUST_ID - 826122

cust_fname - 瑪莎

cust_lname - 凱恩

cust_cell_acode - 210

+1

向我們展示您的數據示例以及您希望查詢輸出的內容。 – RBarryYoung

+2

有沒有辦法......答案是肯定的:一種方法是編寫一個你調用的包裝程序。它獲得SQL迭代的結果,儘管每個列使用從CTE中選擇數據的列構建CTE並返回結果集。爲什麼人們會想要做到這一點,雖然...因爲你改變了要求的結果(選擇*)不再做*了...超越了我。 – xQbert

+3

如果您正在運行.net,java,coldfusion或類似的查詢,您最好使用應用程序代碼來實現您的目標。 –

回答

3

你可以做這樣的事情

SELECT * FROM Customer WHERE customer_id = 'xyz' AND some_col IS NOT NULL; 

或者

SELECT * FROM Customer WHERE customer_id IS NOT NULL 

希望有所幫助。

編輯

試圖找到一個合適的答案後,似乎很少有簡單的方法做你想做的事情。我認爲你最好的選擇是使用這個post的答案。

雖然這個問題稍有不同,但我想你可能會發現那些答案很有幫助。我很抱歉無法向您提供您正在尋找的答案。

+3

這不是這裏所需要的。 – lunr

+0

從我這裏下來。你沒有讀過這個問題。 –

+0

我只是假設問題是粗體文本,如果我的假設不正確,請糾正我,我會調整我的答案。若帶來不便請諒解。 –