sql >> Base de Datos >  >> RDS >> Mysql

ORDENAR POR para valores de moneda

Necesitas dos columnas:

  • uno para el valor, un flotante/doble (o un número entero) que se puede ordenar, utilizar en operaciones como sumas, etc.
  • uno para la moneda (un char(3) siguiendo el estándar ISO 4217 ) utilizado para otros fines (visualización, quizás conversión, etc.)

Almacenar tanto el valor como el símbolo dentro de un varchar no tiene sentido, especialmente porque la posición del símbolo de la moneda varía de un país a otro (puede estar al principio o al final), puede haber un espacio entre el símbolo y el valor, o no, etc.

Dicho esto, si no quieres cambiar tu mesa, algo así podría funcionar:

ORDER BY CAST(
  REPLACE(REPLACE(REPLACE(thecolumn,'$',''),'£',''),'₹','')
  AS DECIMAL(10,2)
)