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

Cómo realizar búsqueda independiente de tildes?

Estas en el tema de Cómo realizar búsqueda independiente de tildes? en el foro de Mysql en Foros del Web. Hola: Querría saber cómo puedo realizar una búsqueda en mysql que sea independiente de tildes. Es decir si el usuario busca María quiero que salgan ...
  #1 (permalink)  
Antiguo 30/11/2011, 10:56
 
Fecha de Ingreso: septiembre-2009
Mensajes: 215
Antigüedad: 14 años, 7 meses
Puntos: 1
Cómo realizar búsqueda independiente de tildes?

Hola:

Querría saber cómo puedo realizar una búsqueda en mysql que sea independiente de tildes.

Es decir si el usuario busca María quiero que salgan también los registros Maria y si el usuario busca Maria quiero que salgan también los registros María.

Supongo que esto incluye sustituir las tildes por letras normales tanto en php como en mysql pero no sé si es la mejor manera de hacerlo.

Un saludo
  #2 (permalink)  
Antiguo 30/11/2011, 11:03
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Cómo realizar búsqueda independiente de tildes?

Cita:
Supongo que esto incluye sustituir las tildes por letras normales tanto en php como en mysql pero no sé si es la mejor manera de hacerlo.
No.
Implica que la collation de la columna y de la tabla terminen en "_ci", y no "_bin".
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 30/11/2011, 11:41
 
Fecha de Ingreso: septiembre-2009
Mensajes: 215
Antigüedad: 14 años, 7 meses
Puntos: 1
Respuesta: Cómo realizar búsqueda independiente de tildes?

Utilizo utf8_geneal_ci y te aseguro que distingue las palabras con tilde y sin ella. También distingue una á de una Á y sin embargo no distingue a de A (que es lo que quiero).
  #4 (permalink)  
Antiguo 30/11/2011, 12:19
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Cómo realizar búsqueda independiente de tildes?

UTF-8 no es lo mismo que Latin1, que se usa más en castellano. Prueba usar las funciones de conversión de collation de MySQL en la consulta (ver manual de referencia)
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 01/12/2011, 15:37
 
Fecha de Ingreso: septiembre-2009
Mensajes: 215
Antigüedad: 14 años, 7 meses
Puntos: 1
Respuesta: Cómo realizar búsqueda independiente de tildes?

Todo lo que yo uso es utf-8 y utf8_general_ci

Para realizar la consulta como me dices, ¿debería de utilizar lo siguiente?

SET character_set_client = 'latin1';
SET character_set_results = 'latin1';
SET character_set_connection = 'latin1';

o solo con el connection debería de valer?

Gracias
  #6 (permalink)  
Antiguo 05/12/2011, 10:19
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Cómo realizar búsqueda independiente de tildes?

A ver, tienes varias soluciones, usando, claro, utf8 que es tu set. Tendrías que usar para eso que quieres la collation o cotejamiento utf8_bin
Opciones:
1) cambiar la collation o cotejamiento del campo. Observa que digo campo, pues puede estar ocurriendo que cambies la de la tabla, pero en el campo mantengas la que tenías cuando lo generaste por defecto, y la collation elegida por ti entonces fue utf8_general_ci. Cambia la del campo a utf8_bin y verás que funciona, pero, ojo, eso afectará a todas las búsquedas realizadas sobre ese campo.
2) cambiar la collation al vuelo, es decir, sólo para esa consulta:
SELECT *
FROM `tutabla`
WHERE campo LIKE (
'Maria'
COLLATE utf8_bin
)

Así no tendrás que cambiar nada en el campo, y podrás mantener otro tipo de consultas, case insensitive por defecto.

Última edición por jurena; 06/12/2011 a las 14:50

Etiquetas: independiente, php, registros, sql
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 05:30.