Les gens utilisent différentes astuces pour ce faire. J'ai cherché sur Google et découvert que certains résultats suivent chacun des astuces différentes. Jetez-y un coup d'œil :
- Tri alphanumérique dans MySQL
- Tri naturel dans MySQL
- Tri des valeurs numériques valeurs mélangées avec des valeurs alphanumériques
- tri naturel mySQL
- Tri naturel dans MySQL
Modifier :
Je viens d'ajouter le code de chaque lien pour les futurs visiteurs.
Contribution donnée
1A 1a 10A 9B 21C 1C 1D
Résultat attendu
1A 1C 1D 1a 9B 10A 21C
Requête
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
Contribution donnée
Table: sorting_test -------------------------- ------------- | alphanumeric VARCHAR(75) | integer INT | -------------------------- ------------- | test1 | 1 | | test12 | 2 | | test13 | 3 | | test2 | 4 | | test3 | 5 | -------------------------- -------------
Résultat attendu
-------------------------- -------------
| alphanumeric VARCHAR(75) | integer INT |
-------------------------- -------------
| test1 | 1 |
| test2 | 4 |
| test3 | 5 |
| test12 | 2 |
| test13 | 3 |
-------------------------- -------------
Requête
SELECT alphanumeric, integer
FROM sorting_test
ORDER BY LENGTH(alphanumeric), alphanumeric
Tri de valeurs numériques mélangées avec valeurs alphanumériques
Contribution donnée
2a, 12, 5b, 5a, 10, 11, 1, 4b
Résultat attendu
1, 2a, 4b, 5a, 5b, 10, 11, 12
Requête
SELECT version
FROM version_sorting
ORDER BY CAST(version AS UNSIGNED), version;
J'espère que cela vous aidera