Heim > Datenbank > MySQL-Tutorial > Wie simuliere ich die FIELD()-Funktion von MySQL in PostgreSQL?

Wie simuliere ich die FIELD()-Funktion von MySQL in PostgreSQL?

Patricia Arquette
Freigeben: 2024-12-08 01:38:11
Original
297 Leute haben es durchsucht

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

MySQL FIELD() in Postgresql simulieren

Die Konvertierung von MySQL zu PostgreSQL kann unvorhergesehene Herausforderungen mit sich bringen. Ein solches Problem ist die Simulation der ORDER BY FIELD()-Funktionalität, die in Postgresql nicht direkt unterstützt wird.

In MySQL weist die FIELD()-Funktion Werten in einer angegebenen Liste Ordinalpositionen zu und sortiert die Ergebnisse danach diese Positionen. Zum Beispiel die folgende Abfrage in MySQL:

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

sortiert die Tabelle „currency_codes“ basierend auf der in der FIELD()-Liste angegebenen Reihenfolge und dann alphabetisch nach Namen.

Um ein ähnliches Verhalten zu erreichen Postgresql können Sie eine CASE-Anweisung innerhalb der ORDER BY-Klausel verwenden:

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;
Nach dem Login kopieren

In dieser Abfrage weist die CASE-Anweisung Prioritätswerte zu (1-6) zu den Codes in der angegebenen Reihenfolge. Werte, die nicht in der Liste gefunden werden, erhalten eine Standardpriorität von 7. Die Ergebnisse werden dann in absteigender Reihenfolge der Priorität und aufsteigender Reihenfolge des Namens sortiert.

Das obige ist der detaillierte Inhalt vonWie simuliere ich die FIELD()-Funktion von MySQL in PostgreSQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage