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
Libérer: 2025-01-02 14:41:40
original
1036 Les gens l'ont consulté

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;
Copier après la connexion

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
Copier après la connexion

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;
Copier après la connexion

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal