Résumé: dans ce tutoriel, vous apprendrez à utiliser l’expression conditionnelle de cas PostgreSQL pour former des requêtes conditionnelles.
L’expression PostgreSQL CASE
est la même que l’instruction IF/ELSE
dans d’autres langages de programmation. Il vous permet d’ajouter une logique if-else à la requête pour former une requête puissante.
Puisque CASE
est une expression, vous pouvez l’utiliser dans tous les endroits où une expression peut être utilisée, par exemple,SELECT
, WHERE
, GROUP BY
, et la clause HAVING
.
L’expression CASE
a deux formes : la forme générale et la forme simple.
- 1) Expression générale de cas PostgreSQL
- A) Un exemple de CAS général
- B) Utilisation du CAS avec une fonction d’agrégation exemple
- 2) Expression de cas PostgreSQL simple
- A) Exemple simple d’expression de CAS PostgreSQL
- B) Utilisation d’une simple expression de cas PostgreSQL avec exemple de fonction d’agrégation
1) Expression générale de cas PostgreSQL
Ce qui suit illustre la forme générale de l’instruction CASE
:
Code language: SQL (Structured Query Language) (sql)
Dans cette syntaxe, chaque condition (condition_1
, condition_2
…) est une expression booléenne qui renvoie true
ou false
.
Lorsqu’une condition est évaluée à false
, l’expression CASE
évalue la condition suivante de haut en bas jusqu’à ce qu’elle trouve une condition qui est évaluée à true
.
Si une condition est évaluée à true
, l’expression CASE
renvoie le résultat correspondant qui suit la condition. Par exemple, si condition_2
est évalué à true
, l’expression CASE
renvoie result_2
. De plus, il cesse immédiatement d’évaluer l’expression suivante.
Dans le cas où toutes les conditions sont évaluées à false
, l’expression CASE
renvoie le résultat (else_result
) qui suit le mot clé ELSE
. Si vous omettez la clause ELSE
, l’expression CASE
renvoie NULL
.
Jetons un coup d’œil à la table film
de l’exemple de base de données.
A) Un exemple de CAS général
Supposons que vous souhaitiez étiqueter les films par leur longueur en fonction de la logique suivante:
- Si la durée est inférieure à 50 minutes, le film est court.
- Si la durée est supérieure à 50 minutes et inférieure ou égale à 120 minutes, le film est moyen.
- Si la durée est supérieure à 120 minutes, le film est long.
Pour appliquer cette logique, vous pouvez utiliser l’expression CASE
dans l’instruction SELECT
comme suit:
Code language: PHP (php)
Sortie:
Notez que nous avons placé un alias de colonne duration
après l’expression CASE
.
B) Utilisation du CAS avec une fonction d’agrégation exemple
Supposons que vous souhaitiez affecter des segments de prix à des films avec la logique suivante:
- Si le tarif de location est de 0,99, le film est économique.
- Si le taux de location est de 1,99, le film est en masse.
- Si le tarif de location est de 4,99, le film est premium.
Et vous voulez connaître le nombre de films appartenant à economy, mass et premium.
Dans ce cas, vous pouvez utiliser l’expression CASE
pour construire la requête comme suit:
Code language: SQL (Structured Query Language) (sql)
Le résultat de la requête est le suivant:
Dans cet exemple, nous avons utilisé l’expression CASE
pour renvoyer 1 ou 0 si le taux de location tombe dans chaque segment de prix. Et nous avons appliqué la fonction SUM
pour calculer le total des films pour chaque segment de prix.
2) Expression de cas PostgreSQL simple
PostgreSQL fournit une autre forme de l’expression CASE
appelée forme simple comme suit:
Code language: SQL (Structured Query Language) (sql)
Le CASE
évalue d’abord le expression
et compare le résultat avec chaque valeur( value_1
, value_2
, …) dans les clauses WHEN
séquentiellement jusqu’à ce qu’il trouve la correspondance.
Une fois que le résultat de expression
est égal à une valeur (valeur1, valeur2, etc.) dans une clause WHEN
, la clause CASE
renvoie le résultat correspondant dans la clause THEN
.
Si CASE
ne trouve aucune correspondance, il renvoie la valeur else_result
qui suit la valeur ELSE
, ou NULL
si la valeur ELSE
n’est pas disponible.
A) Exemple simple d’expression de CAS PostgreSQL
L’instruction suivante utilise l’expression CASE
pour ajouter la description de notation à la sortie:
Code language: PHP (php)
Dans cet exemple, nous avons utilisé une expression simple CASE
pour comparer la note de la table film
avec des valeurs littérales telles que G, PG, NC17, PG-13 et renvoyer la description de la note correspondante.
B) Utilisation d’une simple expression de cas PostgreSQL avec exemple de fonction d’agrégation
L’instruction suivante utilise l’expression CASE
avec la fonction SUM
pour calculer le nombre de films dans chaque classement:
Code language: PHP (php)
Dans ce tutoriel, vous avez appris à utiliser l’expression PostgreSQL CASE
pour former des requêtes complexes.
- Ce tutoriel a-t-il été utile?
- Ouinon