create or replace function sinacentos (text) returns text AS $$
select translate($1,'áéíóúÁÉÍÓÚäëïöüÄËÏÖÜ','aeiouAEIOUaeiouAEIOU');
$$ language sql;
Un ejemplo con esta funcion quedaria de la siguiente manera:
Primero un simple select de una tabla demo con palabras con acentos:
sicodelico=# select id, otro from foobar;
id | otro ----+--------
1 | algo
2 | algo
3 | algo
4 | algo
2 | algo
5 | México
6 | México
7 | Niño
1 | Mexico
(9 filas)
Ahora la misma consulta procesada con nuestra funcion:
sicodelico=# select id, sinacentos(otro) as otro from foobar;
id | otro
----+------------
1 | algo
2 | algo
3 | algo
4 | algo
2 | algo
5 | Mexico
6 | Mexico
7 | Niño
1 | Mexico
(9 filas)
Ahora una busqueda con el conteo total de las palabras que concuerden con México, MËXICO, MÉXICO, etc...
sicodelico=# select count(*) from foobar where upper(sinacentos(otro)) = upper(sinacentos('méxico'));
count
-------
3
(1 fila)
Con la consulta anterior ya tenemos una forma de buscar entre nuestros registros sin preocuparnos por las palabras que significan lo mismo pero aveces estan escritas sin acento o en mayusculas o minusculas.
--
Saludos.
3 comentarios:
Gracias, yo me estaba inventando una función toda jalada por los pelos... ya veo que la solución fácil normalmente es la mejor
gracias! tambien puedes hacer el translate en el select, saludos
It worked great for cleaning in the bottom of our closets behind boxes.
The lover is found merely behind the consumption port, making the suction required to
get the dust in from your flooring and through the revolving
make sure you brush. You will also need a measuring
tape, electric table saw, rubber mallet and spacers, that
are also offered at the flooring store. Hardwood
flooring in Vancouver, Canada homes is suitable for those that are afflicted by allergies.
It works well on both carpet and hard wood floors.
Here is my webpage best vacuum cleaner for hardwood floors
Publicar un comentario