Re: sort mit order by auf Basis de_DE.utf8
"Albe Laurenz" <[email protected]>
| Newsgroups | gmane.comp.db.postgresql.german |
|---|---|
| Message-ID | <D960CB61B694CF459DCFB4B0128514C207A2B86E@exadv11.host.magwien.gv.at> |
Ulrich Goebel schrieb:
>>> Wie bekommt man in PostgreSQL eine Sortierung nach Telefonbuch hin
>>> (Ae, Oe, ...)?
> Wie wäre es mit folgendem Workaround:
>
> Per Trigger in der Tabelle bei jedem insert/update ein extra Feld
> ausfüllen, nach dem dann sortiert werden kann. In dieses Feld trägt man
> im Wesentlichen die Bezeichnung ein, aber eben mit den nötigen
> Modifikationen, also etwa
> ä --> ae
> Ö --> Oe
> ß --> ss
> usw.
Gute Idee, noch besser wäre:
CREATE OR REPLACE FUNCTION to_tel(text) RETURNS text
LANGUAGE sql IMMUTABLE STRICT AS
$$SELECT replace(
replace(
replace(
replace(
lower($1),
'ü', 'ue'),
'ö', 'oe'),
'ä', 'ae'),
'ß', 'ss')$$;
CREATE TABLE beispiel(id integer PRIMARY KEY, feld text);
INSERT ...
CREATE INDEX beispiel_feld_idx ON beispiel(to_tel(feld));
EXPLAIN SELECT * FROM beispiel ORDER BY to_tel(feld);
QUERY PLAN
---------------------------------------------------------------------------------------
Index Scan using beispiel_feld_idx on beispiel (cost=0.00..78.08 rows=1230 width=36)
(1 row)
Liebe Grüße,
Laurenz Albe
--
Sent via pgsql-de-allgemein mailing list ([email protected])
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-de-allgemein