(tildes mayusculas minusculas) En muchas ocasiones, necesitamos realizar búsquedas por palabras pero sin tener en cuenta las tildes.
Hay dos maneras, la primera usando una extension y la otra con una consulta especial, como se detalla a continuación
Y en este caso usando PostgreSQL 9.1, tenemos la extensión unaccent que nos permite dejar sin tildes una palabra o un conjunto de palabras.
Otra de las ventajas de utilizar PostgreSQL, es por que nos permite crear indices a expresiones o funciones.
Como primer paso creamos el indice en el campo que vamos a usar para las búsquedas e instalamos la extensión:
CREATE EXTENSION unaccent;
ALTER FUNCTION unaccent(text) IMMUTABLE;
CREATE INDEX person_name_idx0 ON person USING btree (unaccent(name));
Una vez tenemos la base de datos preparada para realizar consultas, aqui un ejemplo de como realizar una busqueda ignorando las tildes: (usando django)
>>> Person.objects.extra(where=["unaccent(name) = %s"], params=["Andrei"])
[<Person: 1>]
Usando la consulta:
SELECT TO_ASCII(CAT_CLIENTES.NOMBRE, ‘LATIN1’) LIKE ‘%"+variable+"%’ ORDER BY CAT_CLIENTES.NOMBRE ASC
Con la sencilla función TO_ASCII aplicada sobre el campo NOMBRE, tendrá el efecto de que los resultados traídos por la consulta no tomaran en cuenta si el registro tiene o no tilde. Por lo que si ahora buscamos “Juan Apostol” nos traerá de resultado “Juan Apóstol” aunque no lo hallamos escrito con su acento correspondiente.