

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 案例陳述式
<a name="iot-sql-case"></a>

可用於分支執行的案例陳述式，例如切換陳述式。

語法：

```
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` 陳述式會要求至少一個 `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`，則案例陳述式的結果為 `Undefined`。