Comment faire un ORDER BY SQL où 2 est avant 10 ?

Réponses rédigées par Antoine
Dernière mise à jour : 2022-05-20 12:25:37
Thèmes : mysql - order-by - select
Question

Bonjour, lorsque je fais une requête SQL du type SELECT, avec un ORDER BY sur une colonne qui contient des chiffres, j'obtiens un classement du type 1, 10, 11, 12 au lieu de 1, 2, 3, 4.

Réponse

Une rustine pour faire un ORDER BY SQL où 2 serait avant 10, consiste à ajouter un 0 :

SELECT * FROM table ORDER BY id + 0 ASC

Remarque : si la colonne id ne contient bel et bien que des chiffres, vous devriez revoir sa structure et en faire un INT. C'est parce ce que sa structure n'est pas un INTEGER que vous avez ce problème d'ordonnancement.