Ver Mensaje Individual
  #7 (permalink)  
Antiguo 04/06/2010, 11:15
Avatar de gnzsoloyo
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, 5 meses
Puntos: 2658
Respuesta: ordenar campo precio varchar

No te percataste de que te dije que para hacer la conversión debías primero usar esta forma:
Código MySQL:
Ver original
  1. CAST(REPLACE(REPLACE(precio,'.', ''),',','.') AS DECIMAL(20,2))
porque lo que tienes son datos sucios (dirty data), producto de ingresar un datos en un formato incorrecto.

El punto, en las bases de datos, es el separador de decimales y no de miles, por lo que te está cortando el valor donde se supone que es correcto (de hecho, el punto no existe desde la óptica del binario, sino que es una forma codificación que el DBMS "reconstruye" cuando consultas).
El asunto es que antes de hacer la conversión del campo a DECIMAL, primero tienes que corregir el dato guardado. Esto se hace:
Código MySQL:
Ver original
  1. UPDATE tabla
  2. SET precio CAST(REPLACE(REPLACE(precio,'.', ''),',','.') AS DECIMAL(20,2));
Y recién allí puedes cambiar el tipo de columna...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)