

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

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

Les instructions case peuvent être utilisées pour l’exécution de branche, comme une instruction switch.

Syntaxe :

```
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’expression *`v`* est évaluée et fait l’objet d’une comparaison d’égalité avec la valeur *`t[i]`* de chaque clause `WHEN`. Si une correspondance est trouvée, l’expression *`r[i]`* correspondante devient le résultat de l’instruction `CASE`. Les clauses `WHEN` sont évaluées de telle sorte que s’il existe plusieurs clauses correspondantes, le résultat de la première clause correspondante devient le résultat de l’instruction `CASE`. S’il n’y a aucune correspondance, le résultat *`r[e]`* de la clause `ELSE` est le résultat. S’il n’y a ni correspondance ni clause `ELSE`, le résultat est `Undefined`.

Les instructions `CASE` requièrent au moins une clause `WHEN`. Une clause `ELSE` est facultative.

Par exemple :

Charge utile entrante publiée dans une rubrique `topic/subtopic` : 

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

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

La charge utile de sortie serait :

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

**Note**  
Si *`v`* est `Undefined`, le résultat de l’instruction case est `Undefined`.