Re: Collation in ORDER BY not lexicographical
От
Maximilian Tyrtania
Тема
Re: Collation in ORDER BY not lexicographical
Дата
Msg-id
C6E7CC09.3B8A7%maximilian.tyrtania@onlinehome.de
Ответ на
Re: Collation in ORDER BY not lexicographical (Scott Marlowe)
Список
Дерево обсуждения
Collation in ORDER BY not lexicographical Paul Gaspar <devlist@revolversoft.com>
Re: Collation in ORDER BY not lexicographical Scott Marlowe <scott.marlowe@gmail.com>
Re: Collation in ORDER BY not lexicographical Peter Eisentraut <peter_e@gmx.net>
Re: Collation in ORDER BY not lexicographical Maximilian Tyrtania <maximilian.tyrtania@onlinehome.de>
Re: Collation in ORDER BY not lexicographical Paul Gaspar <devlist@revolversoft.com>
am 29.09.2009 11:21 Uhr schrieb Scott Marlowe unter scott.marlowe@gmail.com: > On Tue, Sep 29, 2009 at 2:52 AM, Paul Gaspar wrote: >> Hi! >> >> We have big problems with collation in ORDER BY, which happens in binary >> order, not alphabetic (lexicographical), like:. >> >> A >> B >> Z >> a >> z >> Ä >> Ö >> ä >> ö >> > >> PG is running on Mac OS X 10.5 and 10.6 Intel. > > I seem to recall there were some problem with Mac locales at some > point being broken. Could be you're running into that issue. Yep, i ran into this as well. Here is my workaround: Create a function like this: CREATE OR REPLACE FUNCTION f_getorderbyfriendlyversion(texttoconvert text) RETURNS text AS $BODY$ select replace(replace(replace(replace(replace(replace($1,'Ä','A'),'Ö','O'),'Ü','U' ),'ä','a'),'ö','o'),'ü','u'); $BODY$ LANGUAGE 'sql' IMMUTABLE STRICT COST 100; ALTER FUNCTION f_getorderbyfriendlyversion(text) OWNER TO postgres; Then create an index like this: create index idx_personen_nachname_orderByFriendly on personen (f_getorderbyfriendlyversion(nachname)) Now you can do: select * from personen order by f_getorderbyfriendlyversion(p.nachname) Seems pretty fast. Best, Maximilian Tyrtania
В списке pgsql-general по дате отправления