Maison > base de données > tutoriel mysql > Comment puis-je trier les nombres VARCHAR sous forme d'entiers dans MySQL ?

Comment puis-je trier les nombres VARCHAR sous forme d'entiers dans MySQL ?

Barbara Streisand
Libérer: 2025-01-12 18:36:47
original
192 Les gens l'ont consulté

How Can I Sort VARCHAR Numbers as Integers in MySQL?

MySQL : Trier les colonnes VARCHAR sous forme d'entiers

Les bases de données stockent parfois des nombres sous forme de chaînes (VARCHAR), souvent en raison de systèmes existants ou de dépendances externes. Cela peut conduire à des résultats de tri incorrects lors de l'utilisation de comparaisons de chaînes standard. Voici comment trier correctement ces nombres au format chaîne dans MySQL :

Solution optimale : conversion de type de données

La meilleure approche consiste à modifier le type de données de la colonne du tableau en un entier (INT, BIGINT, etc.). Cela garantit un tri numérique approprié et évite de futurs problèmes.

Méthodes alternatives (lorsque le changement de type de données n'est pas réalisable) :

  1. Casting explicite : Utilisez la fonction CAST() pour convertir explicitement les valeurs VARCHAR en entiers avant de trier :
<code class="language-sql">SELECT col FROM yourtable ORDER BY CAST(col AS UNSIGNED);</code>
Copier après la connexion

Cela oblige MySQL à traiter les valeurs numériquement pendant le processus de tri. UNSIGNED empêche l'interprétation des nombres négatifs.

  1. Conversion implicite : Ajoutez une constante numérique (comme 0) pour convertir implicitement les valeurs de chaîne en nombres :
<code class="language-sql">SELECT col FROM yourtable ORDER BY col + 0;</code>
Copier après la connexion

MySQL tentera d'interpréter la chaîne comme un nombre pour l'opération d'addition, déclenchant la conversion implicite.

  1. Comportement de conversion de chaîne en nombre de MySQL : N'oubliez pas que MySQL convertit les chaînes en nombres de gauche à droite. Seule la partie numérique initiale de la chaîne est prise en compte.
String Value Integer Value
'1' 1
'ABC' 0
'123miles' 123
'3' 0

Les caractères non numériques donneront une valeur 0. Les caractères non numériques de début entraîneront l’échec de la conversion entière.

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