

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

# 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` です。