

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

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

Le istruzioni case possono essere usate per l'esecuzione con diramazioni, come un'istruzione switch.

Sintassi:

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

L'espressione *`v`* viene valutata e confrontata per verificare la corrispondenza con il valore *`t[i]`* di ogni espressione `WHEN`. Se viene trovata una corrispondenza, la clausola *`r[i]`* diventa il risultato dell'istruzione `CASE`. Le clausole `WHEN` vengono valutate in ordine, cosicché, in caso di più di una clausola di corrispondenza, il risultato della prima clausola di corrispondenza diventi il risultato dell'istruzione `CASE`. Se non ci sono corrispondenze, il risultato è il *`r[e]`* della clausola `ELSE`. Se non c'è corrispondenza e nessuna clausola `ELSE`, il risultato è `Undefined`.

Le istruzioni `CASE` richiedono almeno una clausola `WHEN`. Una clausola `ELSE` è facoltativa.

Ad esempio: 

Payload in ingresso pubblicato nell'argomento `topic/subtopic`: 

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

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

Il payload in uscita risultante sarebbe:

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

**Nota**  
Se *`v`* è `Undefined`, il risultato dell'istruzione del caso è `Undefined`.