Heim >Datenbank >MySQL-Tutorial >Wie verwende ich CASE WHEN in MySQL mit numerischen Spalten und Suchbedingungen richtig?

Wie verwende ich CASE WHEN in MySQL mit numerischen Spalten und Suchbedingungen richtig?

Susan Sarandon
Susan SarandonOriginal
2025-01-02 14:41:401000Durchsuche

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

Richtige Verwendung von CASE..WHEN in MySQL

In MySQL ermöglicht das CASE..WHEN-Konstrukt Benutzern, mehrere Bedingungen auszuwerten und ein entsprechendes Ergebnis zurückzugeben. Bei der Verwendung von CASE mit Suchbedingungen und einer numerischen Spalte tritt jedoch ein häufiges Problem auf.

Ursprüngliche Abfrage und Problem:

In einer Abfrage wertet die CASE-Anweisung den Basispreis aus Spalte, in der base_price als dezimal (8,0) definiert ist:

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;

Das Ergebnis dieser Abfrage gibt unerwartete Ergebnisse zurück, wenn alle ausgewählt sind Zeilen, in denen base_price 0 ist, geben die Bedingung 3 zurück:

3 0
3 0
3 0
3 0
3 0

Lösung:

Um dieses Problem zu beheben, sollte die Spaltenspezifikation nach CASE entfernt werden. In der zweiten Form von CASE ist der Spaltenname nach dem Wort CASE nicht erforderlich, wenn Sie Suchbedingungen verwenden.

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;

Erklärung:

CASE hat zwei verschiedene Formulare: Das erste Formular gibt den Spaltennamen an, das zweite Formular jedoch nicht. Die korrekte Verwendung der zweiten Form bei der Auswertung von Suchbedingungen ermöglicht es MySQL, die Bedingungen korrekt auszuwerten und die beabsichtigten Ergebnisse zurückzugeben.

Das obige ist der detaillierte Inhalt vonWie verwende ich CASE WHEN in MySQL mit numerischen Spalten und Suchbedingungen richtig?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn