Bonjour,
J'ai une question à propos du tri d'un champ VARCHAR qui peut contenir des chiffres.
Voici le résultat avec un ORDER BY classique
Presque bon, si ce n'est que "I 30" devrait être après "I 120";
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 SELECT mod_nom FROM modele WHERE mod_typ_id = 5 ORDER BY mod_nom; +------------+ | mod_nom | +------------+ | C 360 | | I 120 | | I 30 | | IC 150 | | IC 300 GAZ | | IDC 150 | | R 150 | +------------+
Avec un CAST ce problème est réglé, par contre le reste n'est plus dans l'ordre
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 SELECT mod_nom FROM modele WHERE mod_typ_id = 5 ORDER BY CAST(mod_nom AS UNSIGNED); +------------+ | mod_nom | +------------+ | I 30 | | I 120 | | C 360 | | R 150 | | IC 150 | | IDC 150 | | IC 300 GAZ | +------------+
L'ordre "logique" que je voudrais avoir est
Y a-t-il une solution pour obtenir ce dernier ordre ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 +------------+ | mod_nom | +------------+ | C 360 | | I 30 | | I 120 | | IC 150 | | IC 300 GAZ | | IDC 150 | | R 150 | +------------+
Sachant que cette colonne peut contenir des noms simples sans chiffres ou alors des chiffres uniquement (enfin avec un signe * ou / au milieu).
J'ai vu également une idée avec un CASE pour faire un ORDER BY différent si la valeur est numérique ou alphabétique, mais ce n'est pas applicable ici.
Merci par avance.
Partager