Complexités de CASE..WHEN dans MySQL
L'instruction CASE..WHEN dans MySQL fournit une méthode polyvalente pour l'évaluation des expressions conditionnelles. Cependant, des complexités surviennent lorsque l'on travaille avec certains scénarios.
Syntaxe CASE ambiguë
Une telle complexité est rencontrée lorsque la colonne base_price est préfixée dans l'expression CASE. Comme le montre l'exemple de requête, l'utilisation de course_enrollment_settings.base_price dans les clauses WHEN introduit une ambiguïté.
Requête :
SELECT CASE course_enrollment_settings.base_price WHEN course_enrollment_settings.base_price = 0 THEN 1 WHEN course_enrollment_settings.base_price<101 THEN 2 WHEN course_enrollment_settings.base_price>100 AND course_enrollment_settings.base_price<201 THEN 3 ELSE 6 END AS 'calc_base_price', course_enrollment_settings.base_price FROM course_enrollment_settings WHERE course_enrollment_settings.base_price = 0
Problème :
Dans cette requête, l'instruction CASE est mal formulée. En incluant course_enrollment_settings.base_price après WHEN, cela conduit à une évaluation incorrecte des conditions.
Résolution :
Pour résoudre ce problème, éliminez le préfixe de table dans l'expression CASE. :
SELECT CASE WHEN base_price = 0 THEN 1 ... END
Deux formes de CASE
L'instruction CASE a deux formes distinctes :
En utilisant la forme correcte et en supprimant le préfixe redondant, l'expression CASE évalue avec précision les conditions.
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!