

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Case-Anweisungen
<a name="iot-sql-case"></a>

Case-Anweisungen können zum Branchen verwendet werden, wie etwa eine switch-Anweisung.

Syntax:

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

Der Ausdruck *`v`* wird ausgewertet und die Übereinstimmung mit dem Wert jeder *`t[i]`*-Klausel abgeglichen. `WHEN` Bei einer Übereinstimmung wird der entsprechende *`r[i]`*-Ausdruck zum Ergebnis der `CASE`-Anweisung. Die `WHEN`-Klauseln werden der Reihe nach ausgewertet, sodass, wenn es mehr als eine übereinstimmende Klausel gibt, das Ergebnis der ersten übereinstimmenden Klausel zum Ergebnis der `CASE`-Anweisung wird. Wenn es keine Treffer gibt, ist *`r[e]`* der`ELSE` Klausel das Ergebnis. Wenn es keine Übereinstimmung und keine `ELSE`-Klausel gibt, ist das Ergebnis `Undefined`.

Für `CASE`-Anweisungen ist mindestens eine `WHEN`-Klausel erforderlich. Eine `ELSE`-Klausel ist optional.

Beispiel:

Eingehende Nutzlast veröffentlicht für Topic `topic/subtopic`:

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

SQL-Anweisung: 

```
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'
```

Die resultierende Ausgabenutzlast ist:

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

**Anmerkung**  
Wenn *`v`* `Undefined` ist, ist das Ergebnis der Case-Anweisung `Undefined`.