Mysql
 sql >> Base de données >  >> RDS >> Mysql

ORDER BY pour les valeurs monétaires

Vous avez besoin de deux colonnes :

  • un pour la valeur, un flottant/double (ou un entier) qui peut être ordonné, utilisé dans des opérations telles que des sommes, etc.
  • un pour la devise (un char(3) suivant la norme ISO 4217 ) utilisé à d'autres fins (affichage, éventuellement conversion, etc.)

Stocker à la fois la valeur et le symbole dans un varchar est un non-sens, d'autant plus que la position du symbole monétaire varie d'un pays à l'autre (peut être au début ou à la fin), il peut y avoir un espace entre le symbole et la valeur, ou pas, etc.

Cela étant dit, si vous ne voulez pas changer votre table, quelque chose comme ça pourrait fonctionner :

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