Ver Mensaje Individual
  #3 (permalink)  
Antiguo 03/06/2010, 17:22
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 va a poder convertirlo a DECIMAL, porque ha usado un VARCHAR para poder guardar el valor con separadores de miles, cosa que no se debe hacer jamás.
Debió usar un campo DECIMAL; ahora, para poder ordenar los valores primero tiene que expurgarlos de basura (los separadores), reemplazar la coma por el punto, si la usó, y recién allí podrá convertir el valor para ordenarlo.
Es un error, producto de suponer que los valores numéricos se almacenan como cifras, cuando en realidad se almacenan como binarios.
Te conviene realizar la conversión de la columna a un tipo DECIMAL, para poder tener el valor un formato compatible con todos los sistemas. Eso, antes de preocuparse por ordenar...
Quedaría algo así:
Código MySQL:
Ver original
  1. SELECT CAST(REPLACE(REPLACE('500.000,23','.', ''),',','.') AS DECIMAL(20,2)) PRECIO
Lo que sería muy engorroso, para aplicarlo cada vez que debas modificar los dirty data que tienes en la base.

El problema de representar un valor '500000.23', como '500.000,23', es un asunto que se resuelve en la consulta, o bien en la interfase, y no usando un tipo de campo que no corresponde (y que además termina necesitando más espacio de disco).
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 03/06/2010 a las 21:16