我想在具有此功能的sql存储过程中编写where子句。
if (@userId=0)
begin
SELECT * from tblUsers
end
else
begin
SELECT * from tblUsers
WHERE userId= @userId
end
当我向存储过程发送id(example:123)
时,它应该带给我特定的一个,当我发送“0”作为id它应该返回整个数据
但我不想使用if else。应该有一些东西可以改进我的where子句。
例如
SELECT * from tblUsers
WHERE (userId= @userId OR @userId = 0) and @userId = 123... bla bla
(或者当然不是这样)
任何帮助?
答案 0 :(得分:3)
您可以在where子句中使用案例条件:
SELECT
*
from
tblUsers
WHERE
userId=(case when @userId=0 then userId else @userId end)
答案 1 :(得分:1)
仅在建议时,如果你在@userid中传递null,那么你可以轻松地做到这一点
SELECT * from tblUsers
WHERE userId= Isnull(@userId,userId)
这可以避免额外的条件......如果没有数据或者你可以这样做就传递@ useId = null
if (@userId=0)
select @userId = null
SELECT * from tblUsers
WHERE userId= Isnull(@userId,userId)