我需要我的幫助查詢:當@Param = -1中陳述過濾
當我發送給查詢使用值-1的參數,我想與過濾「IN」語句,否則根據價值過濾。
我試圖做這樣的事情:
WHERE (StatusId = CASE WHEN @StatusId = - 1
THEN
@StatusId IN (1, 2, 3)
ELSE
StatusId = @StatusId END)
感謝。
我需要我的幫助查詢:當@Param = -1中陳述過濾
當我發送給查詢使用值-1的參數,我想與過濾「IN」語句,否則根據價值過濾。
我試圖做這樣的事情:
WHERE (StatusId = CASE WHEN @StatusId = - 1
THEN
@StatusId IN (1, 2, 3)
ELSE
StatusId = @StatusId END)
感謝。
我認爲你必須在你的例子一個錯字,如下:
WHEN @StatusId = - 1 THEN @StatusId IN (1, 2, 3)
...什麼都不會做,因爲如果@StatusId = -1
,它不會是in (1, 2, 3)
。
Anywhos,你可以只使用OR
和嵌套的括號:
WHERE (StatusId IN (1, 2, 3) AND @StatusId = -1)
OR (StatusId = @StatusId AND @StatusId <> -1)
非常感謝。 – Eyal
你不需要爲這個CASE
聲明,你可以只使用一個WHERE
條款:
WHERE
(
@StatusId = -1 AND StatusId IN (1, 2, 3)
)
OR
(
StatusId = @StatusId AND @StatusId <> -1
)
無需使用CASE
。您可以直接像這樣做:
WHERE
(@StatusId = -1 AND StatusId IN (1, 2, 3))
OR
(StatusId = @StatusId AND @StatusId <> -1)
或者如果你想使用CASE
你可以這樣做:
WHERE StatusId IN
(CASE @StatusId
WHEN -1 THEN 1,2,3
ELSE @StatusId
END)
'CASE'是*表達*有返回的值具體類型。如果你去搜索,你會發現SQL Server沒有'boolean'數據類型... –