Kerumitan CASE..WHEN dalam MySQL
Penyataan CASE..WHEN dalam MySQL menyediakan kaedah serba boleh untuk penilaian ungkapan bersyarat. Walau bagaimanapun, kerumitan timbul apabila bekerja dengan senario tertentu.
Sintaks CASE Ambiguous
Satu kerumitan sedemikian ditemui apabila lajur base_price diawalikan dalam ungkapan CASE. Seperti yang dilihat dalam contoh pertanyaan, menggunakan course_enrollment_settings.base_price dalam klausa WHEN memperkenalkan kekaburan.
Pertanyaan:
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
Isu:
Dalam pertanyaan ini, pernyataan CASE adalah salah dirumuskan. Dengan memasukkan course_enrollment_settings.base_price selepas WHEN, ia membawa kepada penilaian syarat yang salah.
Penyelesaian:
Untuk menyelesaikan isu ini, hapuskan awalan jadual dalam ungkapan CASE :
SELECT CASE WHEN base_price = 0 THEN 1 ... END
Dua Bentuk KES
Pernyataan KES mempunyai dua bentuk berbeza:
Dengan menggunakan bentuk yang betul dan mengalih keluar awalan berlebihan, ungkapan CASE menilai syarat dengan tepat.
Atas ialah kandungan terperinci Bagaimana Mengelakkan Kekaburan dan Menggunakan CASE dengan betul..WHEN Statement dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!