我需要在查询中使用带有多个'THEN'选项的CASE WHEN语句。 所以像这样:
...
WHERE
region = CASE WHEN @cbEU = 'true' **THEN 0 OR 1**
ELSE 2 END
或者类似的东西:
...
WHERE
region IN CASE WHEN @cbEU = 'true' **THEN (0,1)**
ELSE (1,2) END
我认为有一种简单的方法可以做到这一点吗?
答案 0 :(得分:4)
您可以使用:
WHERE ((@cbEU = 'true') AND region IN (0, 1)) OR
((@cbEU = 'false') AND region IN (1, 2))
答案 1 :(得分:0)
以下是我为回答您的问题而编写的示例代码:
Create Table Test
(
a int,
b varchar(10)
)
Insert into Test Values (1,'Sample1'),(2,'Sample2'),(3,'Sample3'),
(4,'Sample4'),(5,'Sample5')
Declare @input int = 2
SELECT * from Test where
b =
CASE @input
when 1 then 'Sample1'
when 2 then 'Sample2'
when 3 then 'Sample3'
END
输出:
a | b
2 |样品2
Case语句在像你这样的场景中非常有用。它可用于select,update,where,having,OrderBy,Delete语句。
参考: