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



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

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

您可以使用:

WHERE ((@cbEU = 'true') AND region IN (0, 1)) OR 
      ((@cbEU = 'false') AND region IN (1, 2))

这是我为回答您的查询而编写的示例代码:

 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

案例陈述在像您这样的场景中非常有用。它可以用于选择,更新,其中,具有,OrderBy,Delete语句。

参考:

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

最新更新