2013-04-26 84 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