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

Stringa dell'ordine SQL come numero

Se possibile, dovresti cambiare il tipo di dati della colonna in un numero se memorizzi solo numeri comunque.

Se non puoi farlo, esegui il cast del valore della colonna su un integer esplicitamente con

select col from yourtable
order by cast(col as unsigned)

o implicitamente ad esempio con un'operazione matematica che forza una conversione in numero

select col from yourtable
order by col + 0

A proposito, MySQL converte le stringhe da sinistra a destra. Esempi:

string value  |  integer value after conversion
--------------+--------------------------------
'1'           |  1
'ABC'         |  0   /* the string does not contain a number, so the result is 0 */
'123miles'    |  123 
'$123'        |  0   /* the left side of the string does not start with a number */