2014-02-25 45 views
0

当我运行以下脚本时,我在第一个查询中得到Null值,但在第二个查询中没有。我怎样才能在第二个查询中包含空值,同时排除这个uniqueidentifier值?Tsql空缺失值

drop table program_field 

create table program_field 
(p uniqueidentifier 
) 

insert program_field values ('10C8BCA5-011C-48B9-BF46-03B88EBF5005'), 
('16BD98AA-2323-4619-8BAF-0C19F90642FF'), 
(Null) 

select p from program_field 
select p from program_field where p <> '10C8BCA5-011C-48B9-BF46-03B88EBF5005' 
+0

NULL <> '10C8BCA5-011C-48B9-BF46-03B88EBF5005'是一个FALSE sta tement,所以你的第二个查询不会返回它。空值不小于,大于或等于任何值。这就是为什么您需要对已经提供的答案中所述的NULL条件进行单独比较。 –

回答

2
select p from program_field where p <> '10C8BCA5-011C-48B9-BF46-03B88EBF5005' or p is null 
1

你可以做到这一点..

select p from program_field where coalesce(p,'') <> '10C8BCA5-011C-48B9-BF46-03B88EBF5005' 
+0

这会给转换错误。不能将空字符串转换为唯一标识符。 –

+0

您可以用COALESCE替换ISNULL以使其运行。 –

+0

@AnupAgrawal:哎呀!没有完全阅读这个问题。现在更新! – DarkKnight

2

需要在where clauseIS NULLIS NOT NULL表达式来比较null值一样:

p <> '10C8BCA5-011C-48B9-BF46-03B88EBF5005' or p is null