Cette section décrit les expressions conditionnelles conformes au SQL
disponible dans Postgres.
 | Si vous avez besoin d'aller plus loin dans les possibilités de
ces expressions conditionnelles, vous aurez à écrire une procédure stockée
dans un langage de programmation plus expressif.
|
CASE
CASE WHEN condition THEN result
[WHEN ...]
[ELSE result]
END |
L'expression SQL CASE est une
expression conditionnelle générique, similaire aux états if/else dans
d'autres langages. Les clauses CASE peuvent être utilisées
n'importe où dans une expression valide. condition est une expression qui renvoit un résultat booléen. Si le
résultat est à true alors la valeur de l'expression
CASE est
result. Si le résultat est à false des clauses
WHEN seront recherchées de la même manière.
Si aucune condition condition WHEN
est à true la valeur de l'expression est
result dans la clause
ELSE. Si la clause ELSE est omise
et aucune condition identique, le résultat est NULL.
Les types de toutes les expressions result
doivent être coercibles à un type unique en sortie.
Voir the section called Constructions UNION et CASE in the chapter called Conversion de type pour plus de détails.
CASE expression
WHEN value THEN result
[WHEN ...]
[ELSE result]
END |
Cette expression CASE "simple" est une variante
spécialisée de la forme générale.
L'expression est calculée et comparée
à toutes les valeurs des clauses
WHEN jusqu'à ce qu'une valeur égale soit trouvée.
Si aucune égalité est trouvée le résultat de la
clause (ou NULL)ELSE est retourné. Ceci est similaire
à l'état switch en C.
COALESCE
La fonction COALESCE renvoit le premier de ses
arguments qui est non NULL. C'est souvent pratique pour substituer
une valeur par défaut aux valeurs NULL quand la donnée est récupérée
pour affichage, par exemple :
SELECT COALESCE(description, short_description, '(none)') ... |
NULLIF
La fonction NULLIF renvoit NULL si et seulement si
value1 et
value2 sont égales. Autrement elle renvoit
value1. eci peut être utilisé pour effectuer
l'opération inverse de l'exemple COALESCE
ci-dessous :
SELECT NULLIF(value, '(none)') ... |
 | COALESCE et NULLIF sont
simplement des écritures sténo pour les expressions CASE.
Elles sont actuellement converties en expressions
CASE à un stade de traitement proche du début,
et les processus sous-jacents supposent qu'il négocie avec
CASE. Ainsi un COALESCE incorrect ou
une utilisation de NULLIF peut renvoyer un message
se référant à CASE.
|