Utilisation de case en SQL
case a deux formats. Fonction de cas simple et fonction de recherche de cas.
1. Fonction de cas simple
case sex when '1' then '男' when '2' then '女’ else '其他' end
2. Fonction de recherche de cas
case when sex = '1' then '男' when sex = '2' then '女' else '其他' end</span>
Ces deux méthodes peuvent réaliser la même fonction. La fonction de cas simple est relativement simple à écrire, mais par rapport à la fonction de recherche de cas, il existe certaines limitations en termes de fonctionnalités, telles que l'écriture de prédicats. (Tutoriel vidéo d'apprentissage gratuit recommandé : Tutoriel vidéo MySQL)
Il y a un autre problème qui nécessite une attention particulière. La fonction case ne renvoie que la première valeur qui remplit les conditions, et la partie restante du cas le fera. sont automatiquement ignorés.
Par exemple, dans le SQL suivant, vous n'obtiendrez jamais le résultat du "second type"
case when col_1 in ('a','b') then '第一类' when col_1 in ('a') then '第二类' else '其他' end
Exemple de démonstration :
Créez d'abord une table d'utilisateurs, qui contient Là Il y a trois champs : id, name et sex. Le contenu du tableau est le suivant :
select * from users ID NAME SEX ---------- -------------------- ---------- 1 张一 2 张二 1 3 张三 4 张四 5 张五 2 6 张六 1 7 张七 2 8 张八 1
1. Le "sexe" dans les résultats du tableau ci-dessus est exprimé en code. en chinois. Vous pouvez utiliser l'instruction case dans l'instruction :
select u.id,u.name,u.sex, (case u.sex when 1 then '男' when 2 then '女' else '空的' end )性别 from users u; ID NAME SEX 性别 --------------------------------------- -------------------- ---------- ------ 1 张一 空的 2 张二 1 男 3 张三 空的 4 张四 空的 5 张五 2 女 6 张六 1 男 7 张七 2 女 8 张八 1 男
2. Si vous ne souhaitez pas que la colonne « sexe » apparaisse dans la liste, l'instruction est la suivante :
select u.id,u.name, (case u.sex when 1 then '男' when 2 then '女' else '空的' end )性别 from users u; ID NAME 性别 --------------------------------------- -------------------- ------ 1 张一 空的 2 张二 男 3 张三 空的 4 张四 空的 5 张五 女 6 张六 男 7 张七 女 8 张八 男
3. Combinez la somme avec le cas pour obtenir des statistiques de segmentation.
Si vous souhaitez maintenant compter le nombre de personnes de différents sexes dans le tableau ci-dessus, l'instruction SQL est la suivante :
select sum(case u.sex when 1 then 1 else 0 end)男性, sum(case u.sex when 2 then 1 else 0 end)女性, sum(case when u.sex <>1 and u.sex<>2 then 1 else 0 end)性别为空 from users u; 男性 女性 性别为空 ---------- ---------- ---------- 3 2 0 -------------------------------------------------------------------------------- SQL> select count(case when u.sex=1 then 1 end)男性, count(case when u.sex=2 then 1 end)女, count(case when u.sex <>1 and u.sex<>2 then 1 end)性别为空 from users u; 男性 女 性别为空 ---------- ---------- ---------- 3 2 0
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!