Sven: SQL in MySQL - PostgreSQL

Hallo,

folgendes SQL-Statement funktioniert mit MySQL einwandfrei:

SELECT * FROM rpoint WHERE ROUTEID IN ('P0#-P1#','P1#-P0#') ORDER BY FIELD(ROUTEID, 'P1#-P0#','P0#-P1#');

Wenn ich das mit Postgresql probiere kommts zur Fehlermeldung:
ERROR:  function field(character varying, "unknown", "unknown") does not exist
HINT:  No function matches the given name and argument types. You may need to add explicit type casts.

Ich denke das liegt an ORDER BY FIELD. Wie kann ich die Funktion für PostreSQL umschreiben, hat da jemand einen Tipp?
Sven

  1. Wie du schon richtig vermutest liegt es an der Funktion FIELD(), die Postgres nicht kennt. Ein Ambivalent gibt es in Postgres nicht und mir würde gerade auch nicht einfallen, wie sich das umgehen liese. Eventuell aber könntest du dir die Sortierung in der Weiterverarbeitung zu nutze machen, was natürlich ein bisschen Performanz einbüssen lässt.

    In deinem Zwei-Statement-Fall sollte dir

    SELECT * FROM rpoint WHERE ROUTEID IN ('P0#-P1#','P1#-P0#') ORDER BY FIELD ROUTEID DESC;

    für beide Systeme das gewünschte Ergebnis liefern.