Maison > base de données > tutoriel mysql > le corps du texte

Comment trier les colonnes de chaînes contenant des nombres dans SQL : gérer les zéros non significatifs et obtenir l'ordre numérique ?

Linda Hamilton
Libérer: 2024-10-26 01:25:02
original
115 Les gens l'ont consulté

How to Sort String Columns Containing Numbers in SQL: Addressing Leading Zeros and Achieving Numerical Order?

Tri des colonnes de chaîne contenant des nombres dans SQL

Lorsque vous essayez de trier une colonne de chaîne contenant des valeurs numériques en utilisant l'ordre par défaut dans SQL, l'ordre naturel l'algorithme de tri peut ne pas produire les résultats souhaités. Plus précisément, les nombres avec des zéros non significatifs peuvent être placés arbitrairement par rapport à leur valeur numérique.

Pour résoudre ce problème, considérons la requête SQL suivante :

<code class="sql">SELECT *
FROM table
ORDER BY CAST(SUBSTRING(column,LOCATE(' ',column)+1) AS SIGNED)</code>
Copier après la connexion

Cette requête suppose que les données de la colonne suivent le modèle de "STRING SPACE NUMBER" et utilise la fonction SUBSTRING pour extraire la partie numérique de chaque chaîne. En convertissant la valeur extraite en un entier signé, la requête peut trier les résultats en fonction des valeurs numériques plutôt que de la représentation sous forme de chaîne.

Voici un exemple pour démontrer la fonctionnalité :

<code class="sql">INSERT INTO t (st) VALUES ('a 1'),('a 12'),('a 6'),('a 11');
SELECT * FROM t ORDER BY st;

+----+------+
| id | st   |
+----+------+
| 1  | a 1  |
| 4  | a 11 |
| 2  | a 12 |
| 3  | a 6  |
+----+------+

SELECT * FROM t ORDER BY CAST(SUBSTRING(st,LOCATE(' ',st)+1) AS SIGNED);

+----+------+
| id | st   |
+----+------+
| 1  | a 1  |
| 3  | a 6  |
| 4  | a 11 |
| 2  | a 12 |
+----+------+</code>
Copier après la connexion

Cette requête trie correctement les lignes en fonction des valeurs numériques contenues dans les chaînes. Si les données de la chaîne suivent un modèle différent, des ajustements peuvent être nécessaires pour extraire la partie 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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!