2010-09-08 66 views
4

我需要在結果集中找到每列沒有空值的行。有沒有更好的方法來查找所有具有值的列的行?

這些結果集具有可變列數。

目前,我能想到的唯一的辦法就是建立在每一個視圖結果集和過濾器是這樣的:

select field1, field2, field3, field4, ... 
from "huge query" 
where field1 is not null and 
     field2 is not null and 
     field3 is not null and 
     field4 is not null and 
     ... is not null 

有沒有更好的辦法在SQL存儲過程/函數來做到這一點服務器或.net代碼(c#或vb.net)?

並且怎麼樣通過所有的行/列做這樣的事情

select field1, field2, field3, field4, ... 
from "huge query" 
(return to .net apps or insert into #temptable) 

,然後在存儲過程/函數或.NET代碼(C#/ vb.net)迴路和標誌或刪除每一行,進行了任何null?

我說的是很容易超過50個不同類型的結果集,它可能會隨時間而增加,所以我在尋找一個通用/易於維護的方式

回答

3

由於空傳播,如果他們都相同的數據類型,嘗試

where colA + ColB + ColC, etc Is Not Null 

如果他們沒有,然後將它們轉換所有(這是不是已經的那些一個字符串)首先進行char處理,然後連接它們。

where Str(ColA) + Str(ColB) + Str(ColC), etc Is Not Null 
+0

+1好點再數據類型 – RedFilter 2010-09-08 12:14:36

+0

+1過,沒不知道'+'可以用字符串以外的其他類型工作 – Larry 2010-09-08 12:20:47

+0

我更新了我的問題,我可能會在最後使用您的解決方案,如果沒有更好的方法 – Fredou 2010-09-08 12:26:28

3

你的方法是不漂亮,但實際上我覺得它會表現最好。另一種方式是做

WHERE (field1 + field2 + field3 + field4) IS NOT NULL 
+0

我更新了我的問題 – Fredou 2010-09-08 12:25:59

0

如果字段1,場2,場2 ... fieldX的字符串,你可能也想嘗試:

select field1, field2, field3, field4, ... 
from "huge query" 
where field1 + field2 + field3 + ... + fieldX is not null 
相關問題