Dans MySQL, la clause 'Order By' trie les données en fonction des valeurs d'une colonne spécifiée. Cependant, lorsqu'il s'agit de données alphanumériques, la méthode de tri par défaut donne la priorité au premier chiffre, ce qui entraîne un classement incorrect.
Par exemple, si nous avons les données suivantes :
1 2 3 4 5 6 7 8 9 10 11 12
Et nous exécutons la requête :
select * from table order by xxxxx asc
Le résultat sera trié comme suit :
1 10 11 12 2 3 4 5 6 7 8 9
En effet, l'ordre est déterminé par le premier chiffre, quels que soient les caractères suivants.
Pour trier correctement les données alphanumériques, nous peut employer diverses astuces :
Tri alphanumérique à l'aide du 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
Tri naturel :
SELECT alphanumeric, integer FROM sorting_test ORDER BY LENGTH(alphanumeric), alphanumeric
Tri des valeurs numériques mélangées à des valeurs alphanumériques :
SELECT version FROM version_sorting ORDER BY CAST(version AS UNSIGNED), version;
En employant ces astuces, nous pouvons garantir que les données alphanumériques sont correctement triées, maintenir l'ordre souhaité des articles.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!