es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Ordenar Por Numérico, Alfabéticamente y Alfanumérico con caracteres especiales.

Actualmente estoy tratando de tomar una lista de valores de mi tabla y ordenarlos alfanuméricamente para que aparezcan de número a letras. Por ejemplo, tengo este conjunto de datos:

3
8
0.64
0.64 + 2.8
70
90
AK
050LL (Beta)
070
PQ
W3
0.5
0.6
0.8
040
070
1.2
1.5
1.6
100
150
187
2.8
250
3.0
6.3
800
8mm

Y quiero que imprima primero 0.5 y luego W3 al final. Estoy usando LPAD para obtener los datos, pero se muestra como se muestra arriba, sin ordenar. ¿Hay alguna forma de ordenarlos por números, luego números+letras y finalmente letras en PostgreSQL? ¿Necesito tener alguna cláusula especial para que el ordenamiento sea correcto?

La declaración SQL:

SELECT * 
FROM data_table
ORDER BY LPAD(parameter_type, 10) ASC 
OFFSET 0 ROWS FETCH NEXT 1000 ROWS ONLY;
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Sí, puedes usar la cláusula “ORDER BY” para ordenar los datos en el orden deseado. Para lograr el orden requerido, puedes utilizar una combinación de ordenamiento por longitud y luego ordenamiento alfanumérico. La siguiente instrucción SQL debería funcionar para ti:

    SELECT * 
    FROM data_table
    ORDER BY 
      length(parameter_type),
      parameter_type 
    OFFSET 0 ROWS FETCH NEXT 1000 ROWS ONLY;
    

    Esto primero ordenará por la longitud del parámetro_type y luego lo ordenará alfabéticamente. Esto te dará el orden deseado donde los números vienen primero, luego los números con letras y finalmente solo las letras.

Comments are closed.