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) :
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>
Cela oblige MySQL à traiter les valeurs numériquement pendant le processus de tri. UNSIGNED
empêche l'interprétation des nombres négatifs.
<code class="language-sql">SELECT col FROM yourtable ORDER BY col + 0;</code>
MySQL tentera d'interpréter la chaîne comme un nombre pour l'opération d'addition, déclenchant la conversion implicite.
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!