Maison > Article > base de données > Comment fonctionne l'instruction CASE de MySQL ?
Comprendre les mécanismes de MySQL CASE
L'instruction CASE de MySQL fonctionne comme une expression conditionnelle, vous permettant d'attribuer dynamiquement des valeurs en fonction de critères spécifiés. Bien que sa syntaxe puisse ressembler à une instruction if, son fonctionnement est distinct.
Travailler avec l'instruction CASE
La syntaxe générale de l'instruction CASE est la suivante :
CASE WHEN search_condition THEN statement_list [WHEN search_condition THEN statement_list] ... [ELSE statement_list] END CASE
Dans ce contexte, la search_condition représente une comparaison qui détermine si la liste_instructions associée est exécutée ou non. La liste_instructions peut contenir n'importe quelle expression MySQL valide.
Exemple d'utilisation pour l'ordre des rôles
Pour générer un champ role_order avec des nombres différents en fonction de la valeur dans le champ user_role, vous peut utiliser l'instruction CASE comme suit :
CASE user_role WHEN 'Manager' THEN 5 WHEN 'Part Time' THEN 7 ELSE -1 -- Unknown END
Dans cet exemple, l'instruction CASE agit comme une instruction switch. Lorsque user_role est égal à 'Manager', il attribue la valeur 5 à role_order. De même, lorsque user_role est égal à « Part Time », il attribue la valeur 7 à role_order. Si user_role ne correspond à aucune des conditions spécifiées, il attribue la valeur -1 par défaut.
Syntaxe alternative
MySQL fournit une syntaxe alternative pour l'instruction CASE lorsque vous examinez une seule valeur. Cette syntaxe est plus concise et peut être utilisée comme suit :
CASE WHEN user_role = 'Manager' THEN 4 WHEN user_name = 'Tom' THEN 27 WHEN columnA <> columnB THEN 99 ELSE -1 -- Unknown END
Dans cette forme alternative, la valeur comparée (user_role) est spécifiée au début, suivie des conditions WHEN.
En comprenant les mécanismes de l'instruction CASE et son comportement de type commutateur, vous pouvez l'utiliser efficacement pour attribuer des valeurs en fonction de critères spécifiques dans vos requêtes MySQL.
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!