Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

ORDER BY para valores de moeda


Você precisa de duas colunas:
  • um para o valor, um float/double (ou um inteiro) que pode ser ordenado, usado em operações como somas, etc.
  • um para a moeda (um caractere(3) seguindo o padrão ISO 4217 ) usado para outros fins (exibição, talvez conversão etc.)

Armazenar valor e símbolo dentro de um varchar não faz sentido, especialmente porque a posição do símbolo da moeda varia de país para país (pode estar no início ou no final), pode haver um espaço entre o símbolo e o valor, ou não, etc

Dito isto, se você não quiser alterar sua tabela, algo assim pode funcionar:
ORDER BY CAST(
  REPLACE(REPLACE(REPLACE(thecolumn,'$',''),'£',''),'₹','')
  AS DECIMAL(10,2)
)