Skip site navigation (1) Skip section navigation (2)

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 (view raw or flat)
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

pgsql-de-allgemein by date

Next:From: Andreas KretschmerDate: 2012-03-24 07:42:34
Subject: Hardware-Frage
Previous:From: Albe LaurenzDate: 2012-03-22 13:58:01
Subject: Re: sort mit order by auf Basis de_DE.utf8

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group