Sort Order von Leerzeichen

From: Egon Wilfinger <egon(at)wilfinger(dot)at>
To: pgsql-de-allgemein(at)postgresql(dot)org
Subject: Sort Order von Leerzeichen
Date: 2005-12-10 09:29:44
Message-ID: 439AA008.1050400@wilfinger.at
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-de-allgemein

Wieder ein mal das Thema Leerzeichen und Sortierung:

Im SQL_ASCII - Zeichensatz und der C Locale werden die Daten
'a', 'a1' und 'a 1' folgendermaßen sortiert:
'a' --> 'a 1' --> 'a1', also das Leerzeichen wie ein
Buchstabe, der vor den Ziffern sortiert wird.

Wegen der Umlaute und dem Euro-Zeichen wurde die Datenbank
auf 'LATIN9' Encoding und der 'at_DE(at)euro' Locale umgestellt.

Jetzt gibt es eher unerwartete Sortierergebnisse:

CREATE TABLE t_test
(
"ID" serial,
text varchar(200),
CONSTRAINT pkey PRIMARY KEY ("ID")
) WITHOUT OIDS;

INSERT INTO t_test (text) VALUES ('A');
INSERT INTO t_test (text) VALUES ('A10');
INSERT INTO t_test (text) VALUES ('A 1');
INSERT INTO t_test (text) VALUES ('A1');
INSERT INTO t_test (text) VALUES ('A 20');
INSERT INTO t_test (text) VALUES ('A 2');
INSERT INTO t_test (text) VALUES ('A2');
INSERT INTO t_test (text) VALUES ('a');
INSERT INTO t_test (text) VALUES ('a1');
INSERT INTO t_test (text) VALUES ('a 1');
INSERT INTO t_test (text) VALUES ('ä');
INSERT INTO t_test (text) VALUES ('ä1');
INSERT INTO t_test (text) VALUES ('ä 1');
INSERT INTO t_test (text) VALUES ('b');
INSERT INTO t_test (text) VALUES ('b1');
INSERT INTO t_test (text) VALUES ('b 1');
INSERT INTO t_test (text) VALUES ('€');
INSERT INTO t_test (text) VALUES ('€1');
INSERT INTO t_test (text) VALUES ('€ 1');

SELECT * FROM t_test ORDER BY text;
ID | text
----+------
17 | €
18 | €1
19 | € 1
8 | a
1 | A
11 | ä
9 | a1
10 | a 1
4 | A1
3 | A 1
12 | ä1
13 | ä 1
2 | A10
7 | A2
6 | A 2
5 | A 20
14 | b
15 | b1
16 | b 1
(19 Zeilen)

Das Leerzeichen scheint nicht mehr ein eigener Buchstabe zu sein,
sondern nur noch den folgenen Buchstaben zu 'beschweren'.

Gibt es eine einfache Möglichkeit, dass die Leerzeichen wieder
vor den Zahlen und Buchstaben sortiert werden?
In den Client-Anwendungen wird in vielen Stellen davon der
speziellen Reihenfolge ausgeganen, und die Workarounds sind
bis jetzt sehr umständlich.

Vielen Dank

Egon

Responses

Browse pgsql-de-allgemein by date

  From Date Subject
Next Message Peter Eisentraut 2005-12-10 10:25:24 Re: Sort Order von Leerzeichen
Previous Message Andrej Doumack 2005-12-10 02:42:06 Re: Jdbc Resultset zu gross