Maison >base de données >SQL >Utilisation du cas quand en SQL

Utilisation du cas quand en SQL

angryTom
angryTomoriginal
2020-02-13 16:35:0422597parcourir

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

2. Fonction de recherche de cas

case when sex = '1' then '男'
     when sex = '2' then '女'
     else &#39;其他&#39; 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 (&#39;a&#39;,&#39;b&#39;) then &#39;第一类&#39;
     when col_1 in (&#39;a&#39;) then &#39;第二类&#39;
     else &#39;其他&#39; 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 &#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 男

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 张八                 男

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!

Déclaration:
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