Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

[SOLUCIONADO] Búsquedas - Distinguir tildes y no tíldes

Estas en el tema de Búsquedas - Distinguir tildes y no tíldes en el foro de Oracle en Foros del Web. Saludos comunidad. Estoy desarrollando una aplicación web que devuelve resultados de una base de datos de una Biblioteca. Captura 2 campos y consulta a la ...
  #1 (permalink)  
Antiguo 05/08/2013, 14:52
Avatar de ghidalgoram  
Fecha de Ingreso: marzo-2008
Ubicación: Costa Rica
Mensajes: 446
Antigüedad: 16 años, 8 meses
Puntos: 7
Sonrisa Búsquedas - Distinguir tildes y no tíldes

Saludos comunidad.
Estoy desarrollando una aplicación web que devuelve resultados de una base de datos de una Biblioteca. Captura 2 campos y consulta a la bases de datos según estos 2criterios:

AUTOR
TITULO


Por ejemplo, si el campo llamado TITULO tiene entre sus miles de registros el siguiente texto:
Cita:
"Nueva Dimensión de las Necesidades del Ser Humano."
CASO 1
Si el usuario digita en el campo TITULO la palabra "Dimensión", automáticamente el registro anterior aparecerá entre los resultados.

CASO 2
Sin embargo, si el usuario digita la misma palabra "Dimension" pero sin tílde, no aparece entre los resultados.

Necesito hacerle ese cambio al sistema web. Por ejemplo, que si el usuario digita la palabra con o sin tilde siempre me aparezca entre los resultados. Por ejemplo:

(Tílde) (No tílde)
Dimensión = Dimension

De cualquiera de las 2 formas que se presentan, el usuario pueda encontrar la información.

Actualmente estoy usando la función LIKE, ejemplo %Dimension% pero buscando información en Internet para utilizar una buena opción pero por el momento no la encuentro.

Existe alguna forma o función en Oracle ?
Gracias
__________________
Loading...

Última edición por gnzsoloyo; 05/08/2013 a las 17:23 Razón: Resaltado innecesario :P
  #2 (permalink)  
Antiguo 05/08/2013, 15:23
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: Búsquedas - Distinguir tíldes y no tíldes

Revisa la función translate.

Aca un ejemplo de su uso.
http://aows.wordpress.com/2008/01/25...sultas-oracle/

De igual forma, si la base de datos es muy grande, te recomiendo indexar la columna de busqueda con un indice basado en funciones.
http://www.oracle-base.com/articles/...ed-indexes.php

de lo contrario, podrías tener serios problemas de performace.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 05/08/2013, 16:52
Avatar de ghidalgoram  
Fecha de Ingreso: marzo-2008
Ubicación: Costa Rica
Mensajes: 446
Antigüedad: 16 años, 8 meses
Puntos: 7
De acuerdo Respuesta: Búsquedas - Distinguir tíldes y no tíldes

Gracias huesos52 por el detallazo.

Dos formas de resolverlas basaso en el link que huesos52 me pasó pero al final las 2 opciones dan el mismo resultado.

OPCION 1
Código SQL:
Ver original
  1. WHERE UPPER(translate(campo, ‘áéíóúÁÉÍÓÚ’, ‘aeiouAEIOU’)) LIKE UPPER(translate(‘%texto’, ‘áéíóúÁÉÍÓÚ’, ‘aeiouAEIOU’));


OPCION 2
Código SQL:
Ver original
  1. WHERE translate(UPPER(campo), ‘ÁÉÍÓÚ’, ‘AEIOU’) LIKE translate(UPPER(‘%texto’), ‘ÁÉÍÓÚ’, ‘AEIOU’);

La segunda es la que utilicé y es la que utiliza menos código.
Gracias huesos52

Saludos.
__________________
Loading...

Etiquetas: busquedas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:18.