Tri numérique du champ Varchar dans MySQL
Vous rencontrez des problèmes avec le tri des valeurs numériques stockées sous forme de chaînes dans un champ varchar ? Dans MySQL, le tri lexicographique peut conduire à des résultats inattendus, où des valeurs comme "42" précèdent "9".
Résoudre le problème
Pour remédier à cela, pensez à modifier votre requête pour convertir explicitement le champ varchar en entier signé avant le tri. Cette conversion contraint les valeurs dans leur représentation numérique, facilitant ainsi un tri numérique correct.
Requête modifiée :
Remplacez votre requête d'origine par la version modifiée suivante :
SELECT * FROM table ORDER BY CAST(number as SIGNED INTEGER) ASC
Comprendre le Cast :
La fonction CAST() convertit le champ numérique d'un varchar à un entier signé. Cela garantit que MySQL traite les valeurs comme des données numériques plutôt que comme des données caractères.
Ordre de tri croissant :
En spécifiant ASC dans la clause order by, vous demandez à MySQL de trier les résultats par ordre croissant. Cela signifie que les plus petites valeurs numériques apparaîtront en premier.
En implémentant cette requête modifiée, vous trierez efficacement votre champ varchar numériquement, en vous assurant que les valeurs comme « 9 » précèdent « 42 ».
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!