Saltar al contenido

MySQL ‘Ordenar por’: clasificación alfanumérica correctamente

Hola usuario de nuestra web, encontramos la solución a tu pregunta, desplázate y la hallarás más abajo.

Solución:

La gente usa diferentes trucos para hacer esto. Busqué en Google y descubrí algunos resultados, cada uno sigue diferentes trucos. Míralos:

  • Clasificación alfanumérica en MySQL
  • Clasificación natural en MySQL
  • Clasificación de valores numéricos mixed con valores alfanuméricos
  • clasificación natural mySQL
  • Ordenación natural en MySQL

Editar:

Acabo de añadir el código de cada enlace para futuros visitantes.

Clasificación alfanumérica en MySQL

Entrada dada

1A 1a 10A 9B 21C 1C 1D

Rendimiento esperado

1A 1C 1D 1a 9B 10A 21C

Consulta

Bin Way
===================================
SELECT 
tbl_column, 
BIN(tbl_column) AS binray_not_needed_column
FROM db_table
ORDER BY binray_not_needed_column ASC , tbl_column ASC

-----------------------

Cast Way
===================================
SELECT 
tbl_column, 
CAST(tbl_column as SIGNED) AS casted_column
FROM db_table
ORDER BY casted_column ASC , tbl_column ASC

Clasificación natural en MySQL

Entrada dada

Table: sorting_test
 -------------------------- -------------
| alphanumeric VARCHAR(75) | integer INT |
 -------------------------- -------------
| test1                    | 1           |
| test12                   | 2           |
| test13                   | 3           |
| test2                    | 4           |
| test3                    | 5           |
 -------------------------- -------------

Rendimiento esperado

 -------------------------- -------------
| alphanumeric VARCHAR(75) | integer INT |
 -------------------------- -------------
| test1                    | 1           |
| test2                    | 4           |
| test3                    | 5           |
| test12                   | 2           |
| test13                   | 3           |
 -------------------------- -------------

Consulta

SELECT alphanumeric, integer
       FROM sorting_test
       ORDER BY LENGTH(alphanumeric), alphanumeric  

Clasificación de valores numéricos mixed con valores alfanuméricos

Entrada dada

2a, 12, 5b, 5a, 10, 11, 1, 4b

Rendimiento esperado

1, 2a, 4b, 5a, 5b, 10, 11, 12

Consulta

SELECT version
FROM version_sorting
ORDER BY CAST(version AS UNSIGNED), version;

Espero que esto ayude

Sé que esta publicación está cerrada, pero creo que mi manera podría ayudar a algunas personas. Así que ahí está:

Mi conjunto de datos es muy similar pero es un poco más complejo. Tiene números, datos alfanuméricos:

1
2
Chair 
3
0
4
5
-
Table
10
13
19
Windows
99
102
Dog

Me gustaría tener el símbolo ‘-‘ al principio, luego los números y luego el texto.

Así que voy así:

SELECT name, (name = '-') boolDash, (name = '0') boolZero, (name+0 > 0) boolNum 
FROM table 
ORDER BY boolDash DESC, boolZero DESC, boolNum DESC, (name+0), name

El resultado debería ser algo:

-
0    
1
2
3
4
5
10
13
99
102
Chair
Dog
Table
Windows

La idea general es hacer una verificación simple en SELECCIONAR y clasificar con el resultado.

Solo haz esto:

SELECT * FROM table ORDER BY column `name`+0 ASC

Agregar el +0 significará que:

0, 10, 11, 2, 3, 4

se convierte en:

0, 2, 3, 4, 10, 11

Recuerda que tienes la capacidad de valorar este enunciado .

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *