Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Stored procedures SQL Server存储过程,在CASE子句内的Else语句中返回多个值_Stored Procedures_In Clause - Fatal编程技术网

Stored procedures SQL Server存储过程,在CASE子句内的Else语句中返回多个值

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

我想在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          // 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我想你不能用案例陈述来做这件事。请查看我的更新以了解其他方法。