Mysql
 sql >> Database >  >> RDS >> Mysql

ORDINA PER per valori di valuta

Hai bisogno di due colonne:

  • uno per il valore, un float/double (o un intero) che può essere ordinato, utilizzato in operazioni come somme, ecc.
  • uno per la valuta (un char(3) che segue lo standard ISO 4217 ) utilizzati per altri scopi (visualizzazione, magari conversione, ecc.)

Memorizzare sia il valore che il simbolo all'interno di un varchar non ha senso, soprattutto perché la posizione del simbolo della valuta varia da paese a paese (può essere all'inizio o alla fine), potrebbe esserci uno spazio tra il simbolo e il valore, o no, ecc.

Detto questo, se non vuoi cambiare la tua tabella, qualcosa del genere potrebbe funzionare:

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