En SQL, l'instruction « Case When » est utilisée pour sélectionner et juger. Pendant l'exécution, les conditions sont d'abord jugées, puis les opérations correspondantes sont effectuées en fonction des résultats du jugement « CASE field WHEN condition 1 » ; ALORS opération 1 QUAND Condition 2 ALORS opération 2...ELSE opération n END;".
L'environnement d'exploitation de ce tutoriel : système Windows 7, version Microsoft SQL Server 2016, ordinateur Dell G3.
Utilisation de case when en SQL
case when est similaire au jugement if else et à l'instruction switch case dans les langages de programmation. Lorsque cette instruction est exécutée, la condition est d'abord jugée, puis l'opération correspondante est effectuée sur la base du résultat du jugement.
Le cas a deux formats : la fonction de cas simple et la fonction de recherche de cas.
Fonction Simple Case :
CASE sex WHEN ‘1’ THEN ‘男’ WHEN ‘0’ THEN ‘女’ ELSE ‘其他’ END
Fonction de recherche de cas :
CASE WHEN sex = ‘1’ THEN ‘男’ WHEN sex = ‘0’ THEN ‘女’ ELSE ‘其他’ END
Évidemment, la fonction Simple Case est plus concise, mais elle ne convient qu'à de tels champs uniques Comparaison de valeurs uniques, et l'avantage de la fonction de recherche de cas est qu'elle est applicable à toutes les situations de comparaison.
Il y a un autre problème qui mérite attention. Une fois que la fonction Case remplit une certaine condition, les conditions restantes seront automatiquement ignorées. Par conséquent, même si plusieurs conditions sont remplies, seule la première sera reconnue lors de l'exécution. une condition.
(Le site Web PHP chinois propose un grand nombre de tutoriels SQL gratuits, tout le monde est invité à les apprendre !)
Lorsque vous utilisez CASE WHEN, vous pouvez le traiter comme une logique Pour les champs anonymes, la valeur du champ est confirmée en fonction de conditions. Lorsque vous devez utiliser le nom du champ, vous pouvez utiliser as pour définir un alias. Ceci est encore très abstrait. Regardez le cas d’utilisation de CASE WHEN ci-dessous pour que ce soit clair.
Scénarios d'utilisation
1. Les données connues peuvent être regroupées et analysées d'une certaine manière.
Sur la base des données démographiques de ce pays, comptez la population de l’Asie et de l’Amérique du Nord. Utilisez le SQL suivant :
SELECT CASE country WHEN '中国' THEN '亚洲' WHEN '印度' THEN '亚洲' WHEN '日本' THEN '亚洲' WHEN '美国' THEN '北美洲' WHEN '加拿大' THEN '北美洲' WHEN '墨西哥' THEN '北美洲' ELSE '其他' END as '洲' , SUM(population) as '人口' FROM test GROUP BY CASE country WHEN '中国' THEN '亚洲' WHEN '印度' THEN '亚洲' WHEN '日本' THEN '亚洲' WHEN '美国' THEN '北美洲' WHEN '加拿大' THEN '北美洲' WHEN '墨西哥' THEN '北美洲' ELSE '其他' END;
Les deux CASE WHEN ici sont équivalents à un champ, mais il convient de mentionner que la valeur THEN du deuxième CASE WHEN There Il n'est pas nécessaire de préciser de quel continent il s'agit, il est simplement utilisé pour regrouper les enregistrements, donc la valeur après THEN ne peut distinguer que ces trois types d'enregistrements. GROUP BY peut également s'écrire :
GROUP BY CASE country WHEN '中国' THEN 0 WHEN '印度' THEN 0 WHEN '日本' THEN 0 WHEN '美国' THEN 1 WHEN '加拿大' THEN 1 WHEN '墨西哥' THEN 1 ELSE 2 END;
2. Utilisez. une instruction SQL Effectuer des regroupements dans différentes conditions.
contient les données suivantes :
Utilisez la fonction Cas pour regrouper par pays et par sexe. Utilisez le SQL suivant :
SELECT country, SUM( CASE WHEN sex = '1' THEN population ELSE 0 END ), --男性人口 SUM( CASE WHEN sex = '2' THEN population ELSE 0 END ) --女性人口 FROM Table_A GROUP BY country;
pour obtenir les résultats suivants :
Expliquez le premier CAS QUAND :
CASE WHEN sex = '1' THEN population ELSE 0 END
Lorsque le sexe de l'enregistrement est 1, la valeur de ce champ est la valeur de population de l'enregistrement, sinon elle est 0, donc la population masculine d'un pays peut être calculée.
Pour plus de tutoriels SQL et autres Introduction à la programmation, veuillez continuer à prêter attention au site Web PHP chinois ! !
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!