-1
SELECT   ProductNumber, Category =
      CASE ProductLine
         WHEN 'R' or 'r' THEN 'Road'
         WHEN 'M' or 'm' THEN 'Mountain'
         WHEN 'T' or 't' THEN 'Touring'
         WHEN 'S' or 's' THEN 'Other sale items'
         ELSE 'Not for sale'

我的基本要求是在 CASE 中使用“或”(如果可能),如果我做错了什么,请提出建议。

4

4 回答 4

5

一种不同的编写方式case接近了,但是您必须重复该变量:

CASE
  WHEN ProductLine in ('R', 'r') THEN 'Road'
  WHEN ProductLine in ('M', 'm') THEN 'Mountain'

或者一个like字符类:

CASE
  WHEN ProductLine like '[Rr]' THEN 'Road'
  WHEN ProductLine like '[Mm]' THEN 'Mountain'

请注意,在 SQL 中,默认情况下字符串比较不区分大小写。您可以通过设置区分大小写的数据库排序规则来更改默认值,但这很不寻常。

于 2012-10-25T16:32:00.200 回答
0

你也可以写

select
    ProductNumber,
    case upper(ProductLine)
        when 'R' then 'Road'
        when 'M' then 'Mountain'
        when 'T' then 'Touring'
        when 'S' then 'Other sale items'
        else 'Not for sale'
    end as Category

您可以将排序规则设置为不区分大小写,只需将 ProductLine 与字母进行比较

于 2012-10-25T16:35:22.747 回答
0

简单地说,你可以这样做;

SELECT   ProductNumber, CASE LOWER(ProductLine) 
                            WHEN 'r' THEN 'Road'
                            WHEN 'm' THEN 'Mountain'
                        END AS Category
FROM TableName

更多详情: 点击这里

于 2012-10-25T16:37:31.097 回答
0

我会推荐 case fall-through,但这在 SQL 中是不允许的。但是,对于 SQL 的失败解决方法有一个很好的答案:SQL Case Statment 可以失败吗?

于 2012-10-25T16:37:36.093 回答