

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

# 案例陳述式
<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`。