我有一個SQL問題,我還沒有找到解決方案,我試圖做的是一個where子句的過程,其中一個userID變量可以包含一個有效的userID或-1指示所有用戶。SQL where子句與case語句
但即時通訊卡在where子句中的這一部分:
AND usertable.userid = CASE WHEN @user = -1
THEN
ELSE
@user
END
我不知道如何處理-1說選擇所有用戶
感謝
我有一個SQL問題,我還沒有找到解決方案,我試圖做的是一個where子句的過程,其中一個userID變量可以包含一個有效的userID或-1指示所有用戶。SQL where子句與case語句
但即時通訊卡在where子句中的這一部分:
AND usertable.userid = CASE WHEN @user = -1
THEN
ELSE
@user
END
我不知道如何處理-1說選擇所有用戶
感謝
也許下面將工作:
SELECT whatever
FROM wherever
WHERE something = somethingelse AND
usertable.userid = CASE @user
WHEN -1 THEN usertable.userid
ELSE @user
END
分享和享受。
你可以改變這樣的條款返回所有用戶...
AND (@user = -1
OR usertable.userid = @user
)
無需case語句這樣的......
你能不能把整個認爲if語句...
喜歡的東西
if (@userId = -1)
SELECT * FROM usertable
else
SELECT * FROM usertable WHERE Id = @userId
不幸的是,這個程序有大約6個參數,而且4個使用相同的CASE語句,所以IF最終會變成巨大的:( – Purplegoldfish 2011-06-02 11:29:32
啊公平的玩法,我沒有意識到 – NinjaNye 2011-06-02 11:31:05
usertable.userid = COALESCE(NULLIF(@user, -1), usertable.userid)
非常感謝您的工作。 – Purplegoldfish 2011-06-02 11:22:59