带有“OR”语句的案例陈述

时间:2012-10-25 16:29:18

标签: sql sql-server sql-server-2005

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'

我的基本要求是对案例使用'或'(如果可能的话),请建议我是否做错了。

4 个答案:

答案 0 :(得分: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中,字符串比较默认情况下不区分大小写。您可以通过设置区分大小写的数据库排序规则来更改默认值,但这很不寻常。

答案 1 :(得分: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与字母

进行比较即可

答案 2 :(得分:0)

只需你可以做;

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

有关详细信息: Click here

答案 3 :(得分:0)

我会建议案例落实,但在SQL中不允许这样做。但是,SQL的解决方法有一个非常好的答案:Can the SQL Case Statment fall through?