Die Kombination von Verkettung mit ORDER BY

Habe ich Schwierigkeiten in der Kombination von Verkettung mit order by in Postgre (9.1.9).
Sagen wir mal, ich habe einen Tabellenrahmen mit 3 Feldern:

            Table "borders"
    Column     |         Type         | Modifiers 
---------------+----------------------+-----------
 country1      | character varying(4) | not null
 country2      | character varying(4) | not null
 length        | numeric              | 

Den ersten beiden Feldern sind die codes der Länder und die Dritte ist die Länge der Grenze zwischen diesen Ländern.

Der Primärschlüssel definiert ist, auf die ersten beiden Felder.

Ich brauche, um zu Komponieren, ein wählen Sie eine Spalte, die würde haben einzigartige Werte für die gesamte Tabelle, die neben dieser Spalte sollte ausgewählt werden, in absteigender Reihenfolge.
Dafür habe ich verketten Sie die key-Felder mit einem Trennzeichen, da sonst zwei verschiedene Zeilen erhalten könnte, das gleiche Ergebnis, wie (AB, C und A, BC).

Also ich habe die folgende Abfrage ausführen:

select  country1||'_'||country2 from borders order by 1;

Aber im Ergebnis sehe ich, dass das ' _ ' - Zeichen weggelassen von der Sortierung.
Die Ergebnisse sieht wie folgt aus:

 ?column? 
----------
 A_CH
 A_CZ
 A_D
 AFG_IR
 AFG_PK
 AFG_TAD
 AFG_TJ
 AFG_TM
 AFG_UZB
 A_FL
 A_H
 A_I
 .
 .

Können Sie sehen, dass das Ergebnis sortiert wird, als wenn die '_' nicht existiert, in die Saiten.

Wenn ich einen Buchstaben (z.B. 'x') als Trennzeichen - die Reihenfolge korrekt ist. Aber ich muss einige spezielle Zeichen, die nicht angezeigt wird in der country1 und ländern2 Felder, zu vermeiden Streitigkeiten.

Was soll ich tun, um die ' _ ' - Zeichen zu berücksichtigen, die während der Sortierung.


BEARBEITEN

Es stellte sich heraus, dass die Verkettung hat nichts mit dem problem zu tun. Das problem ist, dass die Bestellung, indem Sie einfach ignoriert ' _ ' - Zeichen.

  • Die _ Charakter relevant sein können für die Sortierung oder nicht, je nach Sortierung-Einstellungen.
  • Danke, das ist etwas, was ich nicht wusste, und hat es von den Antworten hier.
InformationsquelleAutor jutky | 2013-09-09
Schreibe einen Kommentar