首頁 >資料庫 >mysql教程 >如何在 MySQL 中正確使用 CASE WHEN 與數字列和搜尋條件?

如何在 MySQL 中正確使用 CASE WHEN 與數字列和搜尋條件?

Susan Sarandon
Susan Sarandon原創
2025-01-02 14:41:401037瀏覽

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

在 MySQL 中正確使用 CASE..WHEN

在 MySQL 中,CASE..WHEN 構造允許使用者評估多個條件並傳回對應的結果。然而,當使用具有搜尋條件和數字列的 CASE 時,會出現一個常見問題。

原始查詢與問題:

在查詢中,CASE 語句評估base_price列,其中base_price定義為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;

此查詢的結果傳回意外結果,其中所有選取行(base_price 為0)傳回條件3:

3 0
3 0
3 0
3 0
3 0

解決方案:

要修正此問題,CASE 後的列規範應刪除。在 CASE 的第二種形式中,如果使用搜尋條件,CASE 一詞後面不需要列名。

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;

說明:

CASE 有兩種不同的forms:第一種形式指定列名,而第二種形式則不指定。在評估搜尋條件時正確使用第二種形式可以讓 MySQL 正確評估條件並傳回預期結果。

以上是如何在 MySQL 中正確使用 CASE WHEN 與數字列和搜尋條件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn