From: | "Albe Laurenz" <laurenz(dot)albe(at)wien(dot)gv(dot)at> |
---|---|
To: | "Susanne Ebrecht *EXTERN*" <susanne(at)2ndquadrant(dot)com>, <pgsql-de-allgemein(at)postgresql(dot)org> |
Subject: | Re: sort mit order by auf Basis de_DE.utf8 |
Date: | 2012-03-22 16:03:50 |
Message-ID: | D960CB61B694CF459DCFB4B0128514C207A2B86E@exadv11.host.magwien.gv.at |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-de-allgemein |
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
From | Date | Subject | |
---|---|---|---|
Next Message | Andreas Kretschmer | 2012-03-24 07:42:34 | Hardware-Frage |
Previous Message | Albe Laurenz | 2012-03-22 13:58:01 | Re: sort mit order by auf Basis de_DE.utf8 |