Re: Accent insensitive search?
| От | Thom Brown |
|---|---|
| Тема | Re: Accent insensitive search? |
| Дата | |
| Msg-id | bddc86150903181024m65cafd45y914215cc5b066fc9@mail.gmail.com обсуждение исходный текст |
| Ответ на | Re: Accent insensitive search? (Sam Mason <sam@samason.me.uk>) |
| Список | pgsql-general |
2009/3/18 Sam Mason <sam@samason.me.uk>
If you can't find anything better in PG; the translate[1] function would
be my best suggestion. Performance should be better than using regular
expressions.
Yeah, that does appear to perform better. I tried the following at it worked for me:
CREATE OR REPLACE FUNCTION unaccent_string(text) RETURNS text AS $$
DECLARE
input_string text := $1;
BEGIN
input_string := translate(input_string, 'âãäåāăąÁÂÃÄÅĀĂĄ', 'aaaaaaaaaaaaaaa');
input_string := translate(input_string, 'èééêëēĕėęěĒĔĖĘĚ', 'eeeeeeeeeeeeeee');
input_string := translate(input_string, 'ìíîïìĩīĭÌÍÎÏÌĨĪĬ', 'iiiiiiiiiiiiiiii');
input_string := translate(input_string, 'óôõöōŏőÒÓÔÕÖŌŎŐ', 'ooooooooooooooo');
input_string := translate(input_string, 'ùúûüũūŭůÙÚÛÜŨŪŬŮ', 'uuuuuuuuuuuuuuuu');
return input_string;
END;
$$ LANGUAGE plpgsql;
Regards
Thom
В списке pgsql-general по дате отправления: