Re: sort mit order by auf Basis de_DE.utf8

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

In response to

Browse pgsql-de-allgemein by date

  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