Maison >base de données >tutoriel mysql >Comment trier numériquement les nombres stringifiés dans MySQL ?

Comment trier numériquement les nombres stringifiés dans MySQL ?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-12 18:42:43230parcourir

How to Sort Stringified Numbers Numerically in MySQL?

Trier les numéros de chaîne par valeur numérique dans MySQL

Lorsqu'il s'agit de nombres stockés sous forme de chaînes dans une base de données MySQL, le tri par taille numérique peut être délicat. Les questions suivantes mettent en lumière le problème :

Question :

Comment trier une colonne contenant des nombres stringifiés par ordre croissant, en triant par leur taille numérique plutôt que par leur représentation en caractères ?

Réponse :

La conversion explicite ou implicite des valeurs de chaîne en entiers permet un ordre numérique correct :

Conversion explicite :

<code class="language-sql">SELECT col
FROM yourtable
ORDER BY CAST(col AS UNSIGNED)</code>

Dans cet exemple, CAST convertit la colonne col en un entier non signé avant le tri.

Conversion implicite :

<code class="language-sql">SELECT col
FROM yourtable
ORDER BY col + 0</code>

L'ajout de 0 oblige MySQL à interpréter col comme une valeur numérique avant de trier.

Remarque :

MySQL interprète les chaînes de gauche à droite pour la conversion. Par exemple :

  • "1" est converti en 1.
  • "ABC" est converti en 0 (pas de chiffre initial).
  • "123miles" est converti en 123.
  • "$123" est converti en 0 (le premier caractère n'est pas un nombre).

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!

Déclaration:
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