2013-03-05 4 views
5

Ich möchte eine Abfrage ausführen, um alle Elemente mit einer Zeichenfolge 'ID'> eine angegebene ID zu erhalten.PostgreSQL String Vergleich

Die Abfrage select * from machine_thread where id > 'znRb1c_3TPytk-JoPX19Qw' ein Element mit dem id zT4GabH3Qy2W6YIGh8Ku-w

In den anderen Sprachen gibt die ich benutze (Python, JavaScript) wird ein String-Vergleich zeigt, dass 'znRb1c_3TPytk-JoPX19Qw' größer als 'zT4GabH3Qy2W6YIGh8Ku-w' ist. Was macht Postgresql anders, und gibt es trotzdem den gleichen Vergleich in allen Umgebungen für den Vergleich von String-IDs?

+0

Überprüfen Sie Ihre Datenbankkonfiguration und die Sortierungseinstellung. Ich bekomme das Ergebnis nicht in meiner Datenbank. – Pointy

Antwort

4

Es ist wegen COLLATE die PostgreSQL verwendet.

Führen Sie SHOW LC_COLLATE aus, um zu sehen, welche Kollatierung Sie verwenden.

Die Kollatierung, die Sie wollen (die eine Python und Javascript verwenden) ist "C".

Beispiel here

Einzelheiten here

+0

Beachten Sie, dass Sie auf Pg 9.2 Kollatierungen pro Spalte und pro Vorgang festlegen können, so dass Sie die Sortierung von Namen nicht durcheinander bringen müssen, um C-Kollatierung für diese bestimmte Spalte zu erhalten. –