Les SGBD évolués permettent d'insérer des conditions dans un SELECT pour déterminer ce qui sera affiché.
Dans le SELECT, on utilisera la condition au même endroit où on spécifie normalement le nom du champ à afficher.
Une condition utilisera la syntaxe suivante :
...
CASE
WHEN condition THEN valeur_si_vrai
ELSE valeur_si_faux
END
...;
Par exemple, lorsqu'on liste des voitures, on pourra faire afficher "vieille" ou "récente" selon l'année de chacune des voitures de la table.
Ex :
SELECT id,
CASE
WHEN annee < 2008 THEN 'vieille'
ELSE 'récente'
END AS statut
FROM voitures;
On obtiendra un résultat semblable à ceci :
L'instruction CASE et l'instruction WHERE permettent toutes deux de spécifier une condition. Elles ont cependant un rôle tout à fait différent.
Le CASE spécifie une condition qui détermine qu'est-ce qui sera affiché pour chacun des enregistrements traités.
L'instruction WHERE, quant à elle, spécifie une condition qui détermine quels enregistrements seront affichés.
L'instruction CASE permet également de travailler avec plusieurs conditions :
SELECT id,
CASE
WHEN annee < 2008 THEN 'vieille'
WHEN annee < 2012 THEN 'passable'
ELSE 'récente'
END AS statut
FROM voitures;
« 12.4 Control Flow Functions - CASE ». MySQL. https://dev.mysql.com/doc/refman/5.7/en/control-flow-functions.html#operator_case
▼Publicité