•»Sin pelos en la Lengua ► PostgreSQL

Ignorar tildes en consultas con PostgreSQL

image

Pues hace tiempo ya…, se suscitó el problema que en los formularios de búsqueda del sistema no aparecían los resultados cuando escribías el nombre del cliente “Juan Apostol” , y esto era por que en la base de datos estaba registrado como “Juan Apóstol” ( Nótese esa pequeña cosa llamada “Tilde” arriba de la letra o ).

Para darle solución a este problema se modifico la consulta de búsqueda, de la siguiente forma:

Antes:

SELECT CAT_CLIENTES.NOMBRE LIKE ‘%"+variable+"%’ ORDER BY CAT_CLIENTES.NOMBRE ASC

Después:

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.

 

¿Necesitas otra opción?

http://romanmussi.blogspot.com/2009/12/busquedas-por-campos-de-texto-en.html

¿Necesitas ayuda con Oracle?

Aquí otra solución con Oracle. (via @ivonsue)

 

PD.-Gracias al amigo Rodre por buscar esta solución.

6 comentarios

  1. Por cierto, como en la DB no hay consistencia entre los capturistas (pasa seguido) mi función quedó más o menos así:
    SELECT TO_ASCII(CAT_CLIENTES.NOMBRE, ‘LATIN1′) LIKE ‘%TO_ASCII(«+variable+»)%’ ORDER BY CAT_CLIENTES.NOMBRE ASC
    Espero que a alguien le sea util

Deja una respuesta

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s

A %d blogueros les gusta esto: