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

Resultados no deseados con like

Estas en el tema de Resultados no deseados con like en el foro de Mysql en Foros del Web. Dada la siguiente sentencia SQL: Código: SELECT palabra FROM es WHERE palabra LIKE '%a n o%' Me devuelve una serie de palabras entre las que ...
  #1 (permalink)  
Antiguo 17/12/2008, 21:16
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 2 meses
Puntos: 535
Resultados no deseados con like

Dada la siguiente sentencia SQL:

Código:
SELECT palabra FROM es WHERE palabra LIKE '%ano%'
Me devuelve una serie de palabras entre las que destaco, como errores que veo, las siguientes:

Cita:
ano
anó
año
rebaño
anoréxico
llano
panorama
Notar que puse ano como criterio de búsqueda, por lo que no sé por qué me devuelve anó, año y rebaño cuando sólo me debería devolver ano, anoréxico, llano y panorama; según el ejemplo.

¿Qué le ocurre a mi MySQL?

Edición:
No sólo ocurre con LIKE. Esta sentencia también me devuelve resultados incorrectos (o no deseados por mi):

Código:
SELECT palabra FROM es where palabra = 'añó'
Cita:
ano
anó
año
__________________
...___...

Última edición por AlZuwaga; 17/12/2008 a las 21:44
  #2 (permalink)  
Antiguo 17/12/2008, 21:36
 
Fecha de Ingreso: mayo-2006
Ubicación: Bogotá
Mensajes: 2.061
Antigüedad: 17 años, 11 meses
Puntos: 50
Respuesta: Resultados no deseados con like

Creo que es con el juego de caracteres configurado en su MySQL itente dejandolo que este CS "Case sensitive" que me parece que aparte de diferenciar entre mayusculas y minusulas tambien diferencia tildes, eñes etc
  #3 (permalink)  
Antiguo 17/12/2008, 21:44
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 2 meses
Puntos: 535
Respuesta: Resultados no deseados con like

Podrías decirme cómo pasar a case sensitive? Es que, desde el MySQL-Front, dándole propiedades a la base de datos (y a la tabla), lo único que puedo modificar es el juego de caracteres (lo tengo en latin1) y el Collation (latin1_swedish_ci)

Gracias.
__________________
...___...
  #4 (permalink)  
Antiguo 17/12/2008, 22:10
 
Fecha de Ingreso: mayo-2006
Ubicación: Bogotá
Mensajes: 2.061
Antigüedad: 17 años, 11 meses
Puntos: 50
Respuesta: Resultados no deseados con like

no se si tenga la opcion e colocar este juego de caracteres

Spanish(es-iso-8859-1) o latin1


para cambiar el juego de caracteres la sentencia es esta

default-character-set=ACA VA EL CHARSET


pruebe y me avisa
  #5 (permalink)  
Antiguo 17/12/2008, 22:16
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Resultados no deseados con like

De hecho prueba con alguna de los bin_ ya que estos son binarios (ocupan mas espacio) pero tienden a dar mejores resultados.

Saludos.
  #6 (permalink)  
Antiguo 17/12/2008, 22:42
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 2 meses
Puntos: 535
Respuesta: Resultados no deseados con like

ok, perfecto. mañana (o cuando me despierte y "sea otro día" -aunque sea el mismo-) lo pruebo. gracias a los dos!
__________________
...___...
  #7 (permalink)  
Antiguo 18/12/2008, 02:13
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Resultados no deseados con like

Creo que tienes dos opciones. Si usas, como parece, el charset latin1, deberías elegir para ese campo en el que haces la búsqueda una collation, un cotejamiento de los terminados en _cs o _bin

Es decir, haces esto (nombre es el nombre del campo) y tamaño (yo he puesto 30 en mi ejemplo) y tipo, pones el tamaño y tipo que uses:
ALTER TABLE `tabla` CHANGE `nombre` `nombre` VARCHAR( 30 ) CHARACTER SET latin1 COLLATE latin1_general_cs

o como te ha sugerido GatorV
ALTER TABLE `tabla` CHANGE `nombre` `nombre` VARCHAR( 30 ) CHARACTER SET latin1 COLLATE latin1_bin

Y creo que tendrás el problema resuelto.
  #8 (permalink)  
Antiguo 18/12/2008, 13:06
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 2 meses
Puntos: 535
Respuesta: Resultados no deseados con like

Gracias a los 3, problema resulto cambiándole al campo el collation a latin1_bin
__________________
...___...
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 03:09.