

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# CASE 条件式
<a name="CASE_function"></a>

CASE 式は条件式であり、他の言語で使われる if/then/else ステートメントと似ています。CASE は、複数の条件がある場合に結果を指定するために使用されます。SELECT コマンドでなど、SQL 式が有効な場合に CASE を使用してください。

2 種類の CASE 式 (簡易および検索) があります。
+ 簡易 CASE 式では、式は値と比較されます。一致が検出された場合、THEN 句で指定されたアクションが適用されます。一致が検出されない場合、ELSE 句のアクションが適用されます。
+ 検索 CASE 式では、CASE ごとにブール式に基づいて検証され、CASE ステートメントは最初を一致する CASE を返します。WHEN 句で検出されない場合、ELSE 句のアクションが返されます。

## 構文
<a name="CASE_function-syntax"></a>

条件を満たすために使用される簡易 CASE ステートメント

```
CASE expression
  WHEN value THEN result
  [WHEN...]
  [ELSE result]
END
```

各条件を検証するために使用する検索 CASE ステートメント

```
CASE
  WHEN condition THEN result
  [WHEN ...]
  [ELSE result]
END
```

## 引数
<a name="CASE_function-arguments"></a>

 *expression*   
列名または有効な式。

 *value*   
数値定数または文字列などの式を比較する値。

 *result*   
式またはブール条件が検証されるときに返されるターゲット値または式。すべての結果式のデータタイプは、単一の出力タイプに変換できる必要があります。

 condition**   
true または false に評価される Boolean 式。*条件*が true の場合、CASE 式の値は条件に続く結果であり、残りの CASE 式は処理されません。*条件*が false の場合、後続の WHEN 句はすべて評価されます。WHEN 条件の結果がどれも true ではない場合、CASE 式の値が ELSE 句の結果になります。ELSE 句が省略され、どの条件も true ではない場合、結果は Null となります。

## 例
<a name="CASE_function-examples"></a>

簡易 CASE 式を使用し、VENUE テーブルに対するクエリで `New York City` を `Big Apple` に置換します。その他すべての都市名を `other` に置換します。

```
select venuecity,
  case venuecity
    when 'New York City'
    then 'Big Apple' else 'other'
  end 
from venue
order by venueid desc;

venuecity        |   case
-----------------+-----------
Los Angeles      | other
New York City    | Big Apple
San Francisco    | other
Baltimore        | other
...
```

検索 CASE 式を使用し、それぞれのチケット販売の PRICEPAID 値に基づいてグループ番号を割り当てます。

```
select pricepaid,
  case when pricepaid <10000 then 'group 1'
    when pricepaid >10000 then 'group 2'
    else 'group 3'
  end 
from sales
order by 1 desc;

pricepaid |  case
----------+---------
12624     | group 2
10000     | group 3
10000     | group 3
9996      | group 1
9988      | group 1
...
```