values not into first data change sql char type-conversion sql-order-by numerical

not - sql add data



SQL ORDER chars numéricamente (4)

Este es un problema para ordenar cadenas numéricas en un "tipo natural" (si busca "ordenamiento natural" en Google encontrará toneladas de cosas). Esencialmente, convertir la cadena como int y ordenar el valor resultante debería arreglarlo.

Tengo una columna de números almacenados como caracteres. Cuando hago un ORDER BY para esta columna obtengo lo siguiente:

100
131
200
21
30
31000
etc.

¿Cómo puedo ordenar estos caracteres numéricamente? ¿Necesito convertir algo o ya hay un comando o función SQL para esto?

Gracias.


Prueba esto:

ORDER BY CAST(thecolumn AS int)


Esto funcionó para mí:

ORDER BY ABS(column_name)


La razón de esto es que con un tipo de datos char, está ordenando las filas como una cadena.

La idea de ORDER BY CAST() es correcta, sin embargo, el rendimiento de esto disminuirá a medida que aumente el número de resultados devueltos.

Si solo se trata de datos numéricos en esta columna, la mejor práctica sería encontrar un tipo de datos numéricos adecuado y modificarlo.

Si realmente no puede cambiar la columna y tiene problemas de rendimiento, le sugiero tener una columna de orden de clasificación que contenga el valor emitido en un entero (se convertirán los valores nulos en un valor apropiado).

Indexe la columna de orden de clasificación e, idealmente, agregue un desencadenador a la columna CHAR para que las inserciones o actualizaciones del valor char activen una actualización del valor entero.