带有case语句的SQL where子句

Pur*_*ish 1 sql stored-procedures case where-clause

我有一个SQL问题,我还没有找到解决方案,我试图做的是一个过程的where子句,其中userID变量可以包含有效的userID或-1来指示所有用户.

但是我坚持在where子句的这一部分:

AND usertable.userid = CASE WHEN @user = -1
THEN

ELSE
  @user
END
Run Code Online (Sandbox Code Playgroud)

我不知道如何处理-1来说出选择所有用户

谢谢

Bob*_*ica 5

也许以下方法可行:

SELECT whatever
  FROM wherever
  WHERE something = somethingelse AND
        usertable.userid = CASE @user
                             WHEN -1 THEN usertable.userid
                             ELSE @user
                           END
Run Code Online (Sandbox Code Playgroud)

分享和享受.


Nav*_*utt 5

您可以更改这样的子句以返回所有用户...

AND ( @user = -1 
    OR usertable.userid = @user
)
Run Code Online (Sandbox Code Playgroud)

这种方式不需要案例陈述......