2013-04-26 34 views
1

所以我的查詢是這樣的VB.NET SQL查詢Null值

SELECT pm,SiteNumber,Client,OnHold,Urgent,SARequired,MissingInformation FROM Sites WHERE OnHold<>'' or Urgent<>'' or MissingInformation<>'' or SARequired<>'' and PM='K' and PM is not null and (ProjectStatus<>'Complete' or ProjectStatus<>'Archived') Order By SiteNumber asc 

其中PM不爲空 - 我也試圖在vb.net的值設置爲

PM<>dbnull.value 
'also tried 
PM<> is null 
'or just 
PM<> Null 

無的他們似乎離開了零點

也困惑我,我問只看到PM,其中PM =「K」在上面的查詢,但我看到「R」

以下是我找回

pm 
NULL 
NULL 
NULL 
NULL 
NULL 
NULL 
NULL 
NULL 
NULL 
NULL 
NULL 
NULL 
NULL 
NULL 
NULL 
NULL 
NULL 
NULL 
NULL 
NULL 
NULL 
NULL 
NULL 
NULL 
NULL 
NULL 
NULL 
NULL 
NULL 
NULL 
NULL 
NULL 
NULL 
R 
NULL 
NULL 
NULL 

是故意的,我測試「K」的PM列,因爲我知道我沒有任何

我敢肯定它的一些愚蠢的簡單,只是不能把我的手指上

任何幫助表示讚賞

+0

您在'SELECT'的開頭有'pm',然後使用'PM'。這可以有所作爲。 'SELECT ** PM **,SiteNumber,Client,OnHold,Urgent,SARequired,MissingInformation FROM Sites WHERE OnHold <>''or Orgent <>''or MissingInformation <>''or SARequired <>''and PM ='K '和PM不是null和(ProjectStatus <>'完成'或ProjectStatus <>'存檔')順序通過SiteNumber asc' – Brian 2013-04-26 15:48:52

回答

3

只需使用IS NOT NULL。但是查詢中的問題是OR

格式:

SELECT columns 
FROM sites 
WHERE onhold <> '' 
     OR urgent <> '' 
     OR missinginformation <> '' 
     OR sarequired <> '' 
      AND pm = 'K' 
      AND pm IS NOT NULL 
      AND (projectstatus <> 'Complete' 
        OR projectstatus <> 'Archived') 
ORDER BY sitenumber ASC 

如果你想在任何情況下排除NULLS把條件括號中的其餘部分:

SELECT columns 
FROM sites 
WHERE pm IS NOT NULL 
     AND (onhold <> '' 
       OR urgent <> '' 
       OR missinginformation <> '' 
       OR sarequired <> '' 
       AND pm = 'K' 
       AND (projectstatus <> 'Complete' 
         OR projectstatus <> 'Archived')) 
ORDER BY sitenumber ASC 

編輯我們如何解決將R表現而不是K當我告訴它尋找K不是R

我一定忽略了這個問題。如果你只是想有pm = 'K'行,你不必問,因爲在所有pm = 'K'非空行是不是空含蓄:

WHERE pm = 'K' 
      AND (onhold <> '' ... 
+0

哇,這絕對解決空問題謝謝! - 現在,當我告訴它尋找K而不是K時,我們該如何解決R顯示而不是K? 編輯:我不得不切換其中一個括號來獲得和分離的或 - 的感謝將標記正確,只要它讓我(5分鐘左右) – Pakk 2013-04-26 15:52:50

+0

@ user2236967:編輯我的答案。 – 2013-04-26 15:58:04

+0

您的真棒,感謝您的快速響應! – Pakk 2013-04-26 16:01:47

3

您需要周圍的where子句中的初始or條件括號。

SELECT pm,SiteNumber,Client,OnHold,Urgent,SARequired,MissingInformation 
FROM Sites 
WHERE (OnHold<>'' or Urgent<>'' or MissingInformation<>'' or SARequired<>'') and 
     PM='K' and PM is not null and (ProjectStatus<>'Complete' or ProjectStatus<>'Archived') 
Order By SiteNumber asc 

在SQL,ANDOR更高的優先級。因此,最初的聲明解析爲:

SELECT pm,SiteNumber,Client,OnHold,Urgent,SARequired,MissingInformation 
FROM Sites 
WHERE OnHold<>'' or Urgent<>'' or MissingInformation<>'' or 
     (SARequired<>'' and PM='K' and PM is not null and (ProjectStatus<>'Complete' or ProjectStatus<>'Archived')) 
Order By SiteNumber asc