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

Cadena de orden SQL como número

Si es posible, debe cambiar el tipo de datos de la columna a un número si solo almacena números de todos modos.

Si no puede hacer eso, convierta el valor de su columna en un integer explícitamente con

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

o implícitamente por ejemplo con una operación matemática que fuerza una conversión a número

select col from yourtable
order by col + 0

Por cierto MySQL convierte cadenas de izquierda a derecha. Ejemplos:

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 */