2012-06-13 125 views
-2

我有一個表,看起來像這樣:SQL Null值和非空值

ID (pk,int) 
Col1 (nvarchar) 
Col2 (nvarchar) 
Col3 (nvarchar) 

中的所有列(除了ID)某些值爲NULL。

我想打一個查詢,看起來像這樣:

SELECT * FROM Table 
WHERE (Col1=<parameter> AND Col1 IS NULL) 
+ (Col2=<parameter> AND Col2 IS NULL) 
etc. 

我需要的是NULL和等於參數

感謝

回答

3

您的問題,特別是位「我需要的值是NULL並且等於參數」,沒有任何意義。 WHERE子句:

Col1 = <parameter> AND Col1 IS NULL 

永遠是真實的,因爲一列或者是NULL 東西。它不能同時存在。

如果你的意思是你想要的是等於參數OR NULL值,你應該使用:

Col1 = <parameter> OR Col1 IS NULL 
+0

好的,謝謝。我在我的問題上犯了一個錯誤,你是對的。 但是,這個例子只適用於一列。如果我把第二列(AND Col2 LIKE 或Col2 IS NULL),那麼它給我只有來自Col2的結果是空的或只有來自Col2的結果是(從來都不是)。 我知道這聽起來很複雜,但是我需要來自2列或更多列的值,它們在所有列中均爲空,並且。 也許這是一個語法問題。以下是我在SSME中輸入的內容: WHERE(Col1 ='5'或Col1 IS NULL)和(Col2 IS NULL或Col2 LIKE N'P') – user1376731

1

替換在ANDOR您的WHERE聲明。

WHERE (Col1=<parameter> OR Col1 IS NULL) 
ANd (Col2=<parameter> OR Col2 IS NULL)