Je ne suis pas un pro de SQL,
loin de la. Du coup, j’ignore totalement des fonctionnalités qui sont disponibles,
même si cela fait très longtemps. En travaillant
avec @PascalChouinard, qui lui est pas
mal solide sur le sujet SQL, j’ai appris l’existence de case when
. Ce post
vise à documenter son utilisation.
Personnellement j’utilise uniquement Postgres comme SGDB. Certainement que les autres offre quelque chose de similaire, mais je n’ai pas cherché dans ce sens-là.
CASE WHEN condition THEN result
[WHEN ...]
[ELSE result]
END
condition
est une expression qui retourne un booléenresult
est une expressionCase
est une expression qui s’emploie comme un switch case
classique.
Une fois qu’une condition est vraie, on ne cherche pas à exécuter les suivantes.
Si aucune condition n’est vraie, alors on exécute le else
, s’il est présent.
Si aucune condition n’est vraie et que else
n’est pas présent, alors case
retourne null
.
Voilà le genre de chose que l’on peut faire avec ce nouvel opérateur.
select
id, first_name, last_name,
case
when average_bill < 100 and nb_visit > 4 then 'good customer'
when nb_visit < 2 then 'new customer'
else 'pretty average customer'
end as customer_type;