带 OR 的 SQL CASE 语句?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/23768717/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
SQL CASE statement with OR?
提问by user2125348
Say I have to following:
说我必须遵循:
Select OrderID =
Case OrderID
When 1 Then 'Customer1'
When 2 Then 'Customer2'
When 3 Then 'Customer2'
Else 'Unknown Customer'
End
From OrdersPlaced
Is it possible to add an or and do something along the lines of:
是否可以添加一个 or 并执行以下操作:
Select OrderID =
Case OrderID
When 1 Then 'Customer1'
When 2 Or 3 Then 'Customer2'
Else 'Unknown Customer'
End
From OrdersPlaced
回答by p.s.w.g
There are two forms of CASE
expression, 'searched' and 'simple'. You can't use an OR
with a 'simple' CASE
expression, but you can with the 'searched' form:
有两种CASE
表达形式,“搜索”和“简单”。您不能将 anOR
与“简单”CASE
表达式一起使用,但可以与“搜索”形式一起使用:
Case
When OrderID = 1 Then 'Customer1'
When OrderID = 2 Or
OrderID = 3 Then 'Customer2'
Else 'Unknown Customer'
End
Or even
甚至
Case
When OrderID = 1 Then 'Customer1'
When OrderID IN (2, 3) Then 'Customer2'
Else 'Unknown Customer'
End
回答by Yuriy Galanter
You can use alternative form of CASE
您可以使用 CASE 的替代形式
Select OrderID =
Case
When OrderID = 1 Then 'Customer1'
When OrderID = 2 Or OrderID = 3 Then 'Customer2'
Else 'Unknown Customer'
End
From OrdersPlaced
回答by dasblinkenlight
CASE
expression has two kinds of syntax - the simple (i.e. one that you are showing), and the searched, with multiple logical conditions. If you would like to use an OR
, you need the second kind:
CASE
表达式有两种语法 - 简单的(即您正在显示的一种)和搜索的,具有多个逻辑条件。如果您想使用OR
,则需要第二种:
Select OrderID =
Case
When OrderID =1 Then 'Customer1'
When OrderID =2 Or OrderID =3 Then 'Customer2'
Else 'Unknown Customer'
End
From OrdersPlaced
Here is the description from the documentation:
这是文档中的描述:
- The simple CASE expression compares an expression to a set of simple expressions to determine the result.
- The searched CASE expression evaluates a set of Boolean expressions to determine the result.
- 简单 CASE 表达式将一个表达式与一组简单表达式进行比较以确定结果。
- 搜索的 CASE 表达式评估一组布尔表达式以确定结果。
回答by Siddhardha
Try this. This would work for your scenario.
尝试这个。这适用于您的场景。
Select OrderID =
Case
When OrderID = 1 Then 'Customer1'
When OrderID in (2, 3) Then 'Customer2'
Else 'Unknown Customer'
End
From OrdersPlaced