0
我有一個存儲的proc,它應該基於一個整數來過濾結果,該整數可以是NULL
,我需要能夠選擇匹配整數或檢索所有結果的結果但我無法弄清楚「全部」結果部分的語法。查詢基本上是這樣的:作爲CASE語句中的ELSE子句的值的範圍
Select * from dbo.TABLE
WHERE [IDField] =
CASE
WHEN ISNULL(@ID, 0) > 0 THEN @ID
ELSE ?????
END
我想用一個IN
範圍,包括所有的值,因爲它設置爲0
或Null
將返回任何結果,但是這並不工作:
Select * from dbo.TABLE
WHERE [IDField] =
CASE
WHEN ISNULL(@ID, 0) > 0 THEN @ID
ELSE 1 OR 2 OR 3
END
或本:
Select * from dbo.TABLE
WHERE [IDField] IN (
CASE
WHEN ISNULL(@mID, 0) > 0 THEN @mID
ELSE 1,2,3
END
)
您的問題聲明不是很清楚,但我想你要像'... WHERE [IDField] = @ID OR 1 = 1' 。 – mustaccio
在WHERE(和ON)子句中使用case _expressions_通常是一個糟糕的主意。代之以堅持和/或。 – jarlh