【发布时间】:2018-03-10 12:26:31
【问题描述】:
我找到了一堆类似的questions,但无法得到确切的答案!
我在 SQL where 子句中有以下条件
declare @status int, @applyUserFilter bit, @user nvarchar(156)
--following are values being set by UI
set @activeStatus = 1
set @applyUserFilter = 1
set @user = 'xyzUser'
--I want to filter the list by users only when @applyUserFilter flag is true otherwise it should return the list for all users
--This is what i tried but gives syntax error
WHERE ActiveStatus = @activeStatus
AND CASE WHEN @applyUserFilter = 1 THEN User = @user
注意:这里只显示 where 子句代码!
【问题讨论】:
-
在
WHERE声明中使用CASE要求您将column设置为等于CASE的结果。所以当场景@applyUserFilter = 1为真时,需要设置一列等于1进行过滤。 -
我认为你想要实现的是:
User = CASE WHEN @applyUserFilter = 1 then @user else null endelse语句是可选的。 -
谢谢! @Simon 在这种情况下,当'@applyUserFilter = 0'时它不会返回任何内容,在这种情况下,我希望它返回所有用户的完整列表
-
这个问题是关于 MySQL 的吗?这看起来不像 MySQL。
标签: mysql sql sql-server stored-procedures where-clause