SQL - 'CASE WHEN'语句中的多个'THEN'选项

时间:2016-05-25 14:18:07

标签: sql case

我需要在查询中使用带有多个'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

我认为有一种简单的方法可以做到这一点吗?

2 个答案:

答案 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语句。

参考:

http://www.dotnet-tricks.com/Tutorial/sqlserver/1MS1120313-Understanding-Case-Expression-in-SQL-Server-with-Example.html