Maison > base de données > tutoriel mysql > Comment trier correctement les données alphanumériques dans la clause « ORDER BY » de MySQL ?

Comment trier correctement les données alphanumériques dans la clause « ORDER BY » de MySQL ?

DDD
Libérer: 2024-12-21 03:45:13
original
214 Les gens l'ont consulté

How to Correctly Sort Alphanumeric Data in MySQL's `ORDER BY` Clause?

MySQL 'Order By' - Trier correctement les caractères alphanumériques

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.

Comprendre le problème

Par exemple, si nous avons les données suivantes :

1
2
3
4
5
6
7
8
9
10
11
12
Copier après la connexion

Et nous exécutons la requête :

select * from table order by xxxxx asc
Copier après la connexion

Le résultat sera trié comme suit :

1
10
11
12
2
3
4
5
6
7
8
9
Copier après la connexion

En effet, l'ordre est déterminé par le premier chiffre, quels que soient les caractères suivants.

Résoudre le problème

Pour trier correctement les données alphanumériques, nous peut employer diverses astuces :

  1. Tri alphanumérique utilisant la voie binaire : Cela implique convertir les valeurs alphanumériques en binaires et les trier à l'aide des valeurs binaires.
  2. Tri alphanumérique à l'aide de la méthode Cast : Cette approche convertit les valeurs alphanumériques en entiers signés et les trie à l'aide de la représentation entière .
  3. Tri naturel : Cette méthode trie les données en fonction de l'ordre naturel des valeurs, en considérant à la fois les chiffres et les caractères.
  4. Tri des valeurs numériques mélangées à des valeurs alphanumériques : Dans ce cas, nous pouvons convertir les valeurs alphanumériques en entiers non signés et les trier avec les valeurs numériques.

Exemples de code

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
Copier après la connexion

Tri naturel :

SELECT alphanumeric, integer
       FROM sorting_test
       ORDER BY LENGTH(alphanumeric), alphanumeric  
Copier après la connexion

Tri des valeurs numériques mélangées à des valeurs alphanumériques :

SELECT version
FROM version_sorting
ORDER BY CAST(version AS UNSIGNED), version;
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal