Umlautesortierung in Postgres

Frank Jagusch frank at jagusch-online.de
Di Nov 3 20:12:59 CET 2009


Hallo Jan-Benedict,

Am Dienstag, den 03.11.2009, 19:33 +0100 schrieb Jan-Benedict Glaw:
> On Tue, 2009-11-03 19:18:16 +0100, Frank Jagusch <frank at jagusch-online.de> wrote:
> > Am Montag, den 02.11.2009, 22:47 +0100 schrieb Jan-Benedict Glaw:
> > > On Mon, 2009-11-02 19:06:34 +0100, Frank Jagusch <frank at jagusch-online.de> wrote:
> > > > Hi alle,
> > > > da ist mir was unklar und auch nach einigem Suchen hab' ich keine Lösung
> > > > gefunden:
> > > > Bei einem SELECT FOO FROM BAR ORDER BY FOO bekomme ich von meinem auf
> > > > de_de eingestellten 8.3-er PostgreSQL folgende Sortierung
> > > > (exemplarisch):
> [...]
> 
> > > .... order by regexp_replace (foo, 'ä', 'ae');
> > > (Und natürlich noch die übrigen Umlaute mit einbauen.)
> > 
> > Dein Vorschlag greift in meinem Fall zu kurz: Ich nutze die Datenbank
> > von einer alten Delphi Win32 Anwendung aus, die via BDE und ODBC auf die
> > Datenbank zugreift. Die BDE schraubt unter Verwendung der vorhandenen
> > Indexe selber SELECTs zusammen - da kann ich keine Funktionsaufrufe in
> > die ORDER BY Clause bringen.
> 
> Ist 'nen böser Hack, aber Du könntest die Original-Tabelle umbenennen
> und einen view gleichen Namens anlegen, der in sich wie oben skizziert
> sortiert ist. Falls auf die Daten auch geschrieben wird, kannst Du das
> mit Triggern abfangen und auf die Original-Tabelle umbiegen.
> 
> Das klappt alles natürlich um so schlechter, je mehr Daten (sprich:
> wenn mehr als eine textenthaltende Spalte) vorhanden sind, nach denen
> sortiert werden könnte.
> 
> Im schlimmsten Fall (je nach Wichtigkeit der Applikation und ggf. auch
> Spendierfreudigkeit des Benutzers) könnte man 'nen kleinen Proxy
> dazwischenbauen, der die Statements entsprechend umbaut.
> 
> MfG, JBG
> 
Das was Du schreibt ist so ziemlich das worst case szenario. Es betrifft
mehr als zwei duzend Tabellen mit teilweise mehr als 10 Textfeldern...

Irgendwie muss PostgreSQL doch intern die Sortierung der Lokalisierung
anpassen. Das geht ja mit den verschiedensten Sprachen. Ich kann mir
nicht vorstellen, dass da keine Möglichkeit zur Anpassung vorhanden ist.
Nur hab ich die Stelle nicht gefunden...

Grüße von
Frank
-- 
http://www.jagusch-online.de/frank