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

Ordenar BLOB. Me distingue entre mayúsculas y minúsculas y no quiero eso!!!

Estas en el tema de Ordenar BLOB. Me distingue entre mayúsculas y minúsculas y no quiero eso!!! en el foro de Mysql en Foros del Web. Hola, simplemete estoy haciendo un SELECT * FROM tabla ORDER BY nombre donde nombre es un varchar(50) pero me distingue entre Mayúsculas y minúsculas, y ...
  #1 (permalink)  
Antiguo 16/06/2008, 14:01
 
Fecha de Ingreso: diciembre-2007
Mensajes: 110
Antigüedad: 16 años, 4 meses
Puntos: 1
Ordenar BLOB. Me distingue entre mayúsculas y minúsculas y no quiero eso!!!

Hola, simplemete estoy haciendo un
SELECT * FROM tabla ORDER BY nombre

donde nombre es un varchar(50)


pero me distingue entre Mayúsculas y minúsculas, y no quiero eso. Por lo que leí no debería hacer esa distinción, salvo que le ponga BINARY a la consulta.

Pero desde PHPMYADMIN me dice que NOMBRE es un campo BLOB, y esos tipos de campos SI son CASE SENSITIVE.

Como puedo hacer para consultar un BLOB y que no sea CASE SENSITIVE.


Saludos y muchas gracias por responderme
  #2 (permalink)  
Antiguo 16/06/2008, 16:51
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: Ordenar BLOB. Me distingue entre mayúsculas y minúsculas y no quiero eso!!

Eso es virtualmente imposible, porque lo que está guardando es un binario, y las comparaciones binarias son bit a bit. Con eso, la "A" es el binario 65 (1000001) y "a" el 97 (1100001), Obviamente no son iguales ni jamás te dará igual.
La cosa tiene dos soluciones:
1. Convertir el o los campos de búsqueda en VARCHAR(), cosa que no me parece práctica.
2. Usar una función de conversión a VARCHAR() para los campos de la tabla en el SELECT, de modo que MySQL pueda omitir la comparación binaria. Si estás usando un server 5.0 o posterior en la base, es posible realizar un SP que tome de parámetro la entrada y los campos y realice esa tarea. Verifica en el manual de referencia el uso de SELECT.
__________________
¿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 16/06/2008, 19:56
 
Fecha de Ingreso: diciembre-2007
Mensajes: 110
Antigüedad: 16 años, 4 meses
Puntos: 1
Respuesta: Ordenar BLOB. Me distingue entre mayúsculas y minúsculas y no quiero eso!!

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Eso es virtualmente imposible, porque lo que está guardando es un binario, y las comparaciones binarias son bit a bit. Con eso, la "A" es el binario 65 (1000001) y "a" el 97 (1100001), Obviamente no son iguales ni jamás te dará igual.
La cosa tiene dos soluciones:
1. Convertir el o los campos de búsqueda en VARCHAR(), cosa que no me parece práctica.
2. Usar una función de conversión a VARCHAR() para los campos de la tabla en el SELECT, de modo que MySQL pueda omitir la comparación binaria. Si estás usando un server 5.0 o posterior en la base, es posible realizar un SP que tome de parámetro la entrada y los campos y realice esa tarea. Verifica en el manual de referencia el uso de SELECT.
Hola gnzsoloyo, muchas gracias por ayudarme.


Cuando cree la tabla, al campo nombre le psue varcha(50), poro no se por que se transforma en Blob.

Con phpmyadmin puedo hacer algo de lo que dijiste?? porque ya probe convertir al como en tinytext y varchar(50) pero luego de hacer el select desde phpmyadmin, no me muestra los valores del campo, sino que dice [BLOB - 14Bytes] etc..




No se que hacer!

Saludos
  #4 (permalink)  
Antiguo 16/06/2008, 20:21
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: Ordenar BLOB. Me distingue entre mayúsculas y minúsculas y no quiero eso!!

Según el manual de referencia de MySQL, la conversión más conveniente de BLOB no es a VARCHAR sino a TEXT.
En ese caso las comparaciones de datos se ajustan a la forma en que hace las mismas con CHAR o VARCHAR. Deberás tratar convertir con phpMyAdm las columnas en TEXT y volver a probar.
Hasta te sugeriría que si lo estás haciendo localmente, para el futuro trates de manejar el diseño de la base con una herramienta un poco más dúctil, como MySQL Front, o incluso MySQL Query Browser (algo rígida, pero nativa de MySQL)
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
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 09:09.