ordre mysql du champ varchar comme entier
j'ai un champ varchar dans ma table et je veux le trier. Mais je dois gérer ce champ comme entier. Ce qui signifie que si tri comme texte l'ordre est "19,2,20" mais je veux obtenir le bon ordre "2,19,20".
quelqu'un Peut-il m'aider?
6 réponses
Je n'ai pas réussi à lancer la requête avec CAST
. J'obtenais toujours Error Code: 1064 near "DECIMAL"
(ou un autre type numérique que j'ai choisi). Donc, j'ai trouvé un autre moyen de trier varchar
comme nombres:
SELECT *
FROM mytable
ORDER BY ABS(mycol)
Un peu plus simple et fonctionne dans mon cas.
Voici la solution
SELECT * FROM MyTable ORDER BY ABS(MyCol);
toutes les autres réponses utiliser ABS
, qui convertit les valeurs en valeurs absolues (positives), en supposant que les entiers sont positifs. Une meilleure solution serait d'utiliser * 1
:
SELECT *
FROM mytable
ORDER BY mycol * 1
ceci pour éviter de transformer des nombres négatifs en nombres positifs. Inspiré par: mysql numéro de chaîne de tri
vous pouvez commander varchar champ en utilisant ce code selon votre requis
SELECT * FROM mytable ORDER BY ABS(mycol)