Apabila beralih daripada MySQL ke PostgreSQL, pembangun mungkin menghadapi ketiadaan fungsi ORDER BY FIELD() dalam PostgreSQL. Fungsi ini menyediakan cara yang mudah untuk mengisih rekod berdasarkan senarai nilai yang ditentukan.
Pernyataan Masalah:
Aplikasi Rails menggunakan SQL yang merangkumi klausa pesanan berikut:
SELECT * FROM `currency_codes` ORDER BY FIELD(code, 'GBP', 'EUR', 'BBD', 'AUD', 'CAD', 'USD') DESC, name ASC
Klausa ini bertujuan untuk mengisih rekod berdasarkan senarai kod mata wang yang ditentukan, dengan tambahan pesanan mengikut medan nama. Walau bagaimanapun, PostgreSQL tidak menyokong sintaks ini.
Penyelesaian:
Untuk mensimulasikan tingkah laku MySQL ORDER BY FIELD() dalam PostgreSQL, anda boleh menggunakan gabungan Kenyataan KES dan klausa ORDER BY. Begini caranya:
SELECT * FROM currency_codes ORDER BY CASE WHEN code='USD' THEN 1 WHEN code='CAD' THEN 2 WHEN code='AUD' THEN 3 WHEN code='BBD' THEN 4 WHEN code='EUR' THEN 5 WHEN code='GBP' THEN 6 ELSE 7 END, name;
Dalam pendekatan ini:
Kaedah ini menyediakan cara yang mudah untuk mensimulasikan kelakuan MySQL ORDER BY FIELD() dalam PostgreSQL dan memastikan bahawa rekod diisih mengikut kehendak.
Atas ialah kandungan terperinci Bagaimana untuk Meniru Fungsi ORDER MySQL BY FIELD() dalam PostgreSQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!