CASE WHEN dans MySQL
Dans ce tutoriel, nous visons à comprendre comment utiliser l’instruction CASE WHEN
dans une base de données MySQL.
Les entreprises et les organisations traitant de grandes quantités de données doivent filtrer les données en fonction de certaines conditions. Et s’il y a plusieurs conditions, il devient difficile pour le programmeur d’écrire une requête efficace qui puisse récupérer rapidement les données.
MySQL nous aide à effectuer cette opération à l’aide de l’instruction CASE WHEN
.
L’instruction CASE WHEN
est utile et utilisée dans tous les lieux de travail traitant du filtrage de données dans MySQL. Voyons cette méthode en action.
Mais avant de commencer, créons un jeu de données factice en créant une table, student_details
avec quelques lignes.
-- create the table student_details
CREATE TABLE student_details(
stu_id int,
stu_firstName varchar(255) DEFAULT NULL,
stu_lastName varchar(255) DEFAULT NULL,
primary key(stu_id)
);
-- insert rows to the table student_details
INSERT INTO student_details(stu_id,stu_firstName,stu_lastName)
VALUES(1,"Preet","Sanghavi"),
(2,"Rich","John"),
(3,"Veron","Brow"),
(4,"Preet","Jos"),
(5,"Hash","Shah"),
(6,"Sachin","Parker"),
(7,"David","Miller");
La requête ci-dessus crée une table avec des lignes contenant le prénom et le nom de l’étudiant. Pour afficher les entrées dans les données, nous utilisons le code suivant :
SELECT * FROM student_details;
Le code ci-dessus donnerait la sortie suivante :
stu_id stu_firstName stu_lastName
1 Preet Sanghavi
2 Rich John
3 Veron Brow
4 Preet Jos
5 Hash Shah
6 Sachin Parker
7 David Miller
Comme nous avons configuré notre table, filtrons ces données à l’aide de l’instruction CASE WHEN
.
CASE WHEN
dans MySQL
Comme mentionné ci-dessus, l’instruction CASE WHEN
nous aide à récupérer les valeurs qui répondent à la condition spécifiée dans son expression.
Voici la syntaxe de base de l’instruction CASE WHEN
:
CASE
WHEN condition_1 THEN output_1
WHEN condition_2 THEN output_2
ELSE output_3
END;
Le code susmentionné renvoie la output_1
lorsque la condition_1
est satisfaite, la output_2
lorsque la condition_2
est satisfaite et la output_3
lorsque ni la condition_1
ni la condition_2
ne sont satisfaites.
Maintenant, filtrons la table student_details
en fonction de stu_id
. Lorsque le stu_id
est inférieur ou égal à trois, nous souhaitons imprimer student with smaller id
, et lorsque le stu_id
est supérieur à trois, nous imprimons student with greater id
.
Nous pouvons effectuer cette opération avec le code suivant.
SELECT stu_id, stu_firstName,
CASE
WHEN stu_id > 3 THEN 'student with greater id'
ELSE 'student with smaller id'
END as case_result
FROM student_details;
La sortie de la requête susmentionnée est la suivante.
stu_id stu_firstName case_result
1 Preet student with smaller id
2 Rich student with smaller id
3 Veron student with smaller id
4 Preet student with greater id
5 Hash student with greater id
6 Sachin student with greater id
7 David student with greater id
Comme nous pouvons le voir dans le bloc de code susmentionné, les étudiants avec stu_id
supérieur à trois obtiennent student with greater id
comme résultat de cas. Sinon, nous obtenons student with smaller id
comme résultat de cas.
Remarque : Dans le code précité, nous utilisons l’alias
case_result
pour une meilleure lisibilité avec comme mot-cléAS
dans MySQL.
Ainsi, à l’aide de l’instruction CASE WHEN
, nous pouvons parcourir efficacement différentes conditions et trouver des données correspondantes à partir d’une table dans MySQL.