Sous MySQL, voici une petite astuce rapide quand on ne se souvient plus de la syntaxe de la commande CAST.
Pour trier une colonne de type VARCHAR avec un tri standard, on obtient :
mysql> SELECT colonne FROM ma_table ORDER BY colonne;
colonne
=======
100
1000
10000
200
2000
20000
…
Maintenant, si on souhaite faire un tri numérique sur cette colonne, il existe une méthode très simple :
mysql> SELECT colonne FROM ma_table ORDER BY colonne+0;
colonne
=======
100
200
1000
2000
10000
20000
…
Vous avez repéré la différence ? Vous faites un order by colonne+0, qui déclenche automatiquement un CAST.
On peut se demander s’il n’y a pas un problème de conception amont… si la sémantique de la colonne est un nombre, pourquoi s’interdire le integer au lieu du varchar ?
Encore un système bien fichu, j’imagine
Note que je n’ai jamais dit que c’était du vécu ou que c’était un système de ma conception …
(toute ressemblance avec …)