-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で「OR」を使用することです。何か間違ったことをしている場合は提案してください。

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

ケースフォールスルーをお勧めしますが、SQL では許可されていません。ただし、フォールスルーに対する SQL の回避策については、非常に優れた回答があります。SQL Case ステートメントはフォールスルーできますか?

于 2012-10-25T16:37:36.093 に答える