2014-02-25 56 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