

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

# Case ステートメント
<a name="iot-sql-case"></a>

Case ステートメントを使用して、switch ステートメントと同様に、実行のブランチができます。

構文:

```
CASE v WHEN t[1] THEN r[1] 
  WHEN t[2] THEN r[2] ... 
  WHEN t[n] THEN r[n] 
  ELSE r[e] END
```

*`v`* 式が評価され、各 `WHEN` 句の *`t[i]`* 値と等しいかどうか照合されます。一致がある場合は、対応する *`r[i]`* 式が `CASE` ステートメントの結果になります。`WHEN` 句は順番に評価され、一致する句が複数ある場合、最初に一致した句の結果が `CASE` ステートメントの結果になります。一致するものがない場合は、`ELSE` 句の *`r[e]`* が結果です。一致するものがなく、`ELSE` 句もない場合、結果は `Undefined` です。

`CASE` ステートメントには少なくとも 1 つの `WHEN` 句が必要です。`ELSE` 句はオプションです。

例:

トピック `topic/subtopic` に公開された受信ペイロード:

```
{
    "color":"yellow"
}
```

SQL ステートメント: 

```
SELECT CASE color
        WHEN 'green' THEN 'go'
        WHEN 'yellow' THEN 'caution'
        WHEN 'red' THEN 'stop'
        ELSE 'you are not at a stop light' END as instructions
    FROM 'topic/subtopic'
```

結果の出力ペイロードは次のとおりです。

```
{
    "instructions":"caution"
}
```

**注記**  
*`v`* が `Undefined` の場合、CASE ステートメントの結果は `Undefined` です。