SQL Server查询在where子句中包含null

时间:2015-04-21 04:52:56

标签: sql-server where

我有以下格式的表格。我正在尝试查询此表以获取所有不是PC和PT的记录。

所以我的查询应该返回ID 3,4,5,6,7并且应该忽略1和2

    CREATE TABLE #t (ID INT, V VARCHAR(16))

    INSERT  INTO #t
    VALUES  (1, 'PC'),
            (2, 'PT'),
            (3, NULL),
            (4, NULL),
            (5, NULL),
            (6, 'PS'),
            (7, 'PD');

drop table #t

我使用的查询只返回6和7,并忽略结果集中的空记录。:

select 
    id, v 
from 
    #t 
where  
    v != 'PC' and V != PT

请告诉我如何在结果集中包含null?

3 个答案:

答案 0 :(得分:1)

您的查询也应该检查null条件。

查询 -

select id , v from #t where  v not in ('PC' , 'PT') OR v is null

答案 1 :(得分:0)

select id , v from #t where  v!='PC' and V!=PT or OR V IS NULL

一切都好。请添加空条件

select id , v from #t where  v not in ('PC' , 'PT') and v is null 

使用not in它将返回除PC和PT之外的所有行

答案 2 :(得分:0)

不使用!=表示每个条件,而是使用not in并处理空值,请使用isnull

select 
  id, v 
from 
  #t 
where  
  isnull(v,'') not in ('PC', 'PT')