Skip to content

Trier des données numérique dans un VARCHAR

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.

[ Sorting VARCHAR data in mysql ]

Published inAstucesProgrammation
Loading Facebook Comments ...

2 Comments

  1. supremator supremator

    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 :)

  2. Gerben CASTEL Gerben CASTEL

    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 …)

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée.