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

Bagaimana untuk Mensimulasikan Fungsi FIELD() MySQL dalam PostgreSQL?

Patricia Arquette
Lepaskan: 2024-12-08 01:38:11
asal
295 orang telah melayarinya

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
Salin selepas log masuk

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;
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan