postgres a ceske case insensitive vyhledavani [VYRESENO]

viktor na lacina.org viktor na lacina.org
Úterý Září 23 13:09:30 CEST 2003


Je to cesta, ktera mne take napadla, ale nelibi se mi :-)
Prijde mi smutne suplovat takhle zakladni neschopnost databaze, specialne,
kdyz se v changelogach vytahuji jak jeste vice zoptimalizovali ILIKE, ze
automaticky rozpoznava multibyte kodovani a pri singlebyte beha rychleji :-)

reseni pro postgres (nejlepsi na ktere jsem prisel):
rozsekat si retezec na znaky a vsechny s diakritikou prepsat do
tvaru [á|Á] a pak predat regexu... vychazim li z toho, ze regex se
jednou skompiluje a pak jen pouziva, nemusi to byt az tak pomale
... i kdyz indexu asi nevyuzije :-(

Dik vsem za pomoc,

Viktor

> Asi me tady spousta lidi zkritizuje, ale kvuli podobnym problemum s
> vyhledavanim v MySQL jsem presel na reseni, ktere by se nechalo nazvat
> "brute stupid" :-)
> Od kazdeho textoveho pole, ve kterem chci vyhledavat si udelam duplikat, kam
> pri insertu nebo updatu vlozim kopii textu zbavenou diakritiky a prevedenou
> na upercase. Je to trocha programovani navic a tabulky jsou ponekud
> objemnejsi, ale vyhledevani funguje naprosto spolehlive.
> 
> create table test (jmeno char(30), prijmeni char(30), ajmeno char(30),
> aprijmeni char(30));
> insert into test set jmeno='Jiří', prijmeni='Žáček', ajmeno='JIRI',
> aprijmeni='ZACEK';


Další informace o konferenci Linux