Maison > base de données > tutoriel mysql > Comment puis-je trier numériquement une colonne MySQL contenant des chaînes « nom-numéro » ?

Comment puis-je trier numériquement une colonne MySQL contenant des chaînes « nom-numéro » ?

Linda Hamilton
Libérer: 2024-12-30 19:22:10
original
225 Les gens l'ont consulté

How Can I Sort a MySQL Column Containing

Convertir du texte non numérique partiel en nombres pour le tri des requêtes MySQL

Dans MySQL, trier les colonnes varchar en fonction des valeurs numériques intégrées peut être difficile . Cette question aborde un scénario pratique dans lequel une colonne contient des identifiants au format « nom-numéro » et doit être triée en fonction de la composante numérique.

Problème :

La colonne contient du texte au format « nom-numéro », avec le composant numérique intégré dans le texte. Le tri de la colonne en utilisant l'ordre des caractères par défaut entraîne une séquence inexacte en raison de la comparaison des caractères.

Solution :

Pour résoudre ce problème, il est nécessaire de convertir le non -texte numérique en nombres avant le tri. La requête suivante peut accomplir cela :

SELECT field,CONVERT(SUBSTRING_INDEX(field,'-',-1),UNSIGNED INTEGER) AS num
FROM table
ORDER BY num;
Copier après la connexion

Explication :

  • SUBSTRING_INDEX(field,'-',-1) : extrait le composant numérique de le texte de l'identifiant en le divisant au niveau du trait d'union (-) et en renvoyant le dernier substring.
  • CONVERT() : convertit la sous-chaîne extraite en un entier non signé, lui permettant d'être comparée et triée numériquement.
  • ORDER BY num : Trie les résultats en fonction de la valeur numérique convertie.

Supplémentaire Considérations :

  • On suppose que la partie nom de l'identifiant ne contient aucun chiffre pour éviter les conversions numériques incorrectes.
  • Si la partie nom peut contenir des chiffres, elle est nécessaire d'utiliser une expression regex plus complexe pour extraire le composant numérique avec précision.

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal