Stored procedures SQL Server存储过程,在CASE子句内的Else语句中返回多个值
我想在where子句中使用CASE和IN子句Stored procedures SQL Server存储过程,在CASE子句内的Else语句中返回多个值,stored-procedures,in-clause,Stored Procedures,In Clause,我想在where子句中使用CASE和IN子句 当用户状态=1时,案例应返回1 当用户状态=2时,案例应返回2 当用户状态=3时,案例应返回3 当User.Status=NULL时,它应该显示状态为1、2和3的所有用户 但是下面的查询抛出了一个语法错误 查询: SELECT * FROM User where isInternalUser = 0 and DeleteMark <> 1 and User.Status IN ( CASE @UserStatus
- 当用户状态=1时,案例应返回1
- 当用户状态=2时,案例应返回2
- 当用户状态=3时,案例应返回3
- 当User.Status=NULL时,它应该显示状态为1、2和3的所有用户
SELECT *
FROM User
where isInternalUser = 0 and DeleteMark <> 1 and
User.Status IN
(
CASE @UserStatus // case for UserStatus
WHEN 0 THEN 0
WHEN 1 THEN 1
WHEN 2 THEN 2
ELSE (0,1,2)
END
)
选择*
来自用户
其中isInternalUser=0并删除标记1和
用户。状态为
(
CASE@UserStatus//UserStatus的CASE
当0时,则为0
当1时,则1
当2时,则2
ELSE(0,1,2)
结束
)
谁能帮帮我吗
谢谢,
Aneesh尝试不使用
CASE
语句,但检查@UserStatus是否为NULL
:
SELECT *
FROM User
WHERE isInternalUser = 0 AND DeleteMark <> 1 AND (
(@UserStatus IS NOT NULL AND Status = @UserStatus)
OR (@UserStatus IS NULL AND Status IN (0, 1, 2))
)
选择*
来自用户
其中isInternalUser=0并删除标记1和(
(@UserStatus不为NULL,Status=@UserStatus)
或(@UserStatus为NULL,状态为(0,1,2))
)
尝试不使用CASE
语句,但检查@UserStatus是否为NULL
:
SELECT *
FROM User
WHERE isInternalUser = 0 AND DeleteMark <> 1 AND (
(@UserStatus IS NOT NULL AND Status = @UserStatus)
OR (@UserStatus IS NULL AND Status IN (0, 1, 2))
)
选择*
来自用户
其中isInternalUser=0并删除标记1和(
(@UserStatus不为NULL,Status=@UserStatus)
或(@UserStatus为NULL,状态为(0,1,2))
)
您不能从案例中的一个分支返回单个int(0),也不能从另一个分支返回完整的int列表。您不能从案例中的一个分支返回单个int(0),也不能从另一个分支返回完整的int列表。谢谢,但语法错误仍然存在。ELSE中“,”附近的语法不正确statement@user1437112我想你不能用案例陈述来做这件事。请查看我的更新以了解其他方法。谢谢,但语法错误仍然存在。ELSE中“,”附近的语法不正确statement@user1437112我想你不能用案例陈述来做这件事。请查看我的更新以了解其他方法。