我有一个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