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.
Gracias colegas politécnicos, justo lo que andaba buscando.
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
intente y me manda un erroe me dice que la convercion de utf78 a ascII no esta soportada
Me pasa lo mismo que a Miguel
convercion de utf8 a ascII no esta soportada 😦
usar translate(campo, ‘ÁÉÍÓÚáéíóú,»AEIOUaeiou’) ilike ‘busqueda’
LATIN1 modifica el valor del campo. Con esto simplemente se reemplaza el acento.