Maison >base de données >tutoriel mysql >Comment utiliser correctement CASE WHEN dans MySQL avec des colonnes numériques et des conditions de recherche ?

Comment utiliser correctement CASE WHEN dans MySQL avec des colonnes numériques et des conditions de recherche ?

Susan Sarandon
Susan Sarandonoriginal
2025-01-02 14:41:401058parcourir

How to Correctly Use CASE WHEN in MySQL with Numeric Columns and Search Conditions?

Utilisation appropriée de CASE..WHEN dans MySQL

Dans MySQL, la construction CASE..WHEN permet aux utilisateurs d'évaluer plusieurs conditions et de renvoyer un résultat correspondant. Cependant, un problème courant survient lors de l'utilisation de CASE avec des conditions de recherche et une colonne numérique.

Requête et problème d'origine :

Dans une requête, l'instruction CASE évalue le prix base_price. colonne, où base_price est défini comme decimal(8,0):

SELECT
   CASE course_enrollment_settings.base_price
    WHEN course_enrollment_settings.base_price = 0      THEN 1
    ...
    ELSE 6
   END AS 'calc_base_price',
   course_enrollment_settings.base_price
FROM
    course_enrollment_settings
WHERE course_enrollment_settings.base_price = 0;

Le résultat de cette requête renvoie des résultats inattendus où tous sont sélectionnés les lignes, où base_price est 0, renvoient la condition 3 :

3 0
3 0
3 0
3 0
3 0

Solution :

Pour corriger ce problème, la spécification de la colonne après CASE doit être supprimée. Dans la deuxième forme de CASE, le nom de la colonne n'est pas obligatoire après le mot CASE si vous utilisez des conditions de recherche.

SELECT
   CASE
    WHEN course_enrollment_settings.base_price = 0      THEN 1
    ...
    ELSE 6
   END AS 'calc_base_price',
   course_enrollment_settings.base_price
FROM
    course_enrollment_settings
WHERE course_enrollment_settings.base_price = 0;

Explication :

CASE a deux types différents formulaires : le premier formulaire spécifie le nom de la colonne, contrairement au deuxième formulaire. L'utilisation correcte du deuxième formulaire lors de l'évaluation des conditions de recherche permet à MySQL d'évaluer correctement les conditions et de renvoyer les résultats escomptés.

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