我想在where子句中使用CASE和IN子句
的所有用户。
但下面的查询会引发语法错误。
查询:
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
)
有人能帮帮我吗..。
谢谢,Aneesh
发布于 2012-06-12 23:14:27
尝试不使用CASE
语句,但检查是否为@UserStatus IS 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))
)
发布于 2012-06-12 22:51:00
User.Status IN
(
SELECT s FROM (
SELECT 1 s union SELECT 2 s union SELECT 3 s
) a
WHERE @UserStatus is null or @UserStatus = s
)
https://stackoverflow.com/questions/11009549
复制