14 votes

MySQL order by string with numbers

J'ai des chaînes de caractères telles que M1 M3 M4 M14 M30 M40 etc (en fait, n'importe quel chiffre à 2-3 chiffres après une lettre) Lorsque je fais " ORDER BY name ", j'obtiens un résultat :

M1, M14, M3, M30, M4, M40

Quand je veux :

M1, M3, M4, M14, M30, M40 Il traite le tout comme une chaîne de caractères, mais je veux le traiter comme une chaîne de caractères + int.

Des idées ?

0voto

Bruno Gerotto Points 59

Essayez de supprimer le caractère avec SUBSTR. Utilisez ensuite ABS pour obtenir la valeur absolue du champ :

SELECT * FROM table ORDER BY ABS(SUBSTR(field,1));

0voto

Simone Rossaini Points 4600

Une autre méthode que j'ai utilisée dans mon projet est :

SELECT * FROM table_name ORDER BY LENGTH(col_name) DESC, col_name DESC LIMIT 1

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X