Tri numérique des champs Varchar dans MySQL : la fonction CAST
Dans certains scénarios, un champ varchar MySQL peut contenir des valeurs entières avec des zéros non significatifs, ce qui fait que le tri lexicographique s'écarte de l'ordre numérique souhaité. Pour résoudre ce problème, la fonction CAST propose une solution.
Problème :
Considérons une table avec un champ nommé "numéro" de type varchar, stockant des valeurs entières. Malgré son type de données, « numéro » contient des valeurs telles que « 009 » et « 042 ». Lors du tri à l'aide de la requête suivante :
SELECT * FROM table ORDER BY number ASC
Le résultat serait :
number 009 042 9
Solution :
Pour trier par valeurs numériques, MySQL fournit la fonction CAST. En convertissant le champ varchar en SIGNED INTEGER, les zéros non significatifs sont ignorés, ce qui entraîne un ordre numérique correct.
La requête modifiée à l'aide de la fonction CAST :
SELECT * FROM table ORDER BY CAST(number AS SIGNED INTEGER) ASC
Produira désormais le champ souhaité. tri :
number 9 009 042
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!