Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mensimulasikan Fungsi FIELD() MySQL dalam PostgreSQL?

Bagaimana untuk Mensimulasikan Fungsi FIELD() MySQL dalam PostgreSQL?

Patricia Arquette
Patricia Arquetteasal
2024-12-08 01:38:11358semak imbas

How to Simulate MySQL's FIELD() Function in PostgreSQL?

Mensimulasikan MySQL FIELD() dalam Postgresql

Menukar daripada MySQL kepada PostgreSQL boleh membawa cabaran yang tidak dijangka. Satu isu sedemikian ialah mensimulasikan fungsi ORDER BY FIELD() , yang tidak disokong secara langsung dalam Postgresql.

Dalam MySQL, fungsi FIELD() memberikan kedudukan ordinal kepada nilai dalam senarai tertentu dan menyusun keputusan berdasarkan jawatan-jawatan ini. Sebagai contoh, pertanyaan berikut dalam MySQL:

SELECT * FROM `currency_codes` ORDER BY FIELD(code, 'GBP', 'EUR', 'BBD', 'AUD', 'CAD', 'USD') DESC, name ASC

mengisih jadual currency_codes berdasarkan susunan yang dinyatakan dalam senarai FIELD() dan kemudian mengikut abjad mengikut nama.

Untuk mencapai tingkah laku yang serupa dalam Postgresql, anda boleh menggunakan pernyataan CASE dalam klausa ORDER BY:

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 pertanyaan ini, pernyataan CASE memberikan nilai keutamaan (1-6) kepada kod dalam susunan yang ditentukan. Nilai yang tidak ditemui dalam senarai menerima keutamaan lalai sebanyak 7. Hasilnya kemudian diisih mengikut tertib keutamaan menurun dan tertib nama menaik.

Atas ialah kandungan terperinci Bagaimana untuk Mensimulasikan Fungsi FIELD() MySQL dalam PostgreSQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn