Maison > base de données > SQL > le corps du texte

Utilisation du cas quand en SQL

angryTom
Libérer: 2020-02-13 16:35:04
original
22501 Les gens l'ont consulté

Utilisation du cas quand en SQL

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
Copier après la connexion

2. Fonction de recherche de cas

case when sex = '1' then '男'
     when sex = '2' then '女'
     else &#39;其他&#39; end</span>
Copier après la connexion

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 (&#39;a&#39;,&#39;b&#39;) then &#39;第一类&#39;
     when col_1 in (&#39;a&#39;) then &#39;第二类&#39;
     else &#39;其他&#39; end
Copier après la connexion

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
Copier après la connexion

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 &#39;男&#39;
      when 2 then &#39;女&#39;
      else &#39;空的&#39;
      end
     )性别
  from users u;
                                    ID NAME                        SEX 性别
--------------------------------------- -------------------- ---------- ------
                                      1 张一                            空的
                                      2 张二                          1 男
                                      3 张三                            空的
                                      4 张四                            空的
                                      5 张五                          2 女
                                      6 张六                          1 男
                                      7 张七                          2 女
                                      8 张八                          1 男
Copier après la connexion

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 &#39;男&#39;
      when 2 then &#39;女&#39;
      else &#39;空的&#39;
      end
    )性别
  from users u;
 
                                     ID NAME                 性别
--------------------------------------- -------------------- ------
                                      1 张一                 空的
                                      2 张二                 男
                                      3 张三                 空的
                                      4 张四                 空的
                                      5 张五                 女
                                      6 张六                 男
                                      7 张七                 女
                                      8 张八                 男
Copier après la connexion

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
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal