b_medamine
Messages postés69Date d'inscriptionmardi 21 juin 2005StatutMembreDernière intervention 4 décembre 2007
-
29 déc. 2005 à 18:03
cs_Anthomicro
Messages postés9433Date d'inscriptionmardi 9 octobre 2001StatutMembreDernière intervention13 avril 2007
-
29 déc. 2005 à 19:36
Bonjour,
J'ai un champ dans une table SQL de type varchar. ça dépend de la
valeur d'un autre champ, il est soit une chaine de carcatère soit une
valeur numérique.
Lorsque je fais une sélection en ordre croissant de mes valeurs numérique, j'obtiens comme exemple la suite suivante :
| 1045 |
| 1049 |
| 105 |
| 1050 |
| 1055 |
| 106 |
| 1060 |
| 1070 |
| 1080 |
| 1084 |
| 1085 |
| 1088 |
| 1090 |
| 1091 |
| 1092 |
| 11 |
| 110 |
| 1108 |
| 1109 |
| 1110
alors que la liste doit commencer par 11..... Y a t-il un moyen que je
convertit ma chaine de caractère en valeur numérique et avoir le bon
ordre. Merci
FhX
Messages postés2350Date d'inscriptionmercredi 13 octobre 2004StatutMembreDernière intervention18 avril 20153 29 déc. 2005 à 18:42
"
Trés fort que tu es !!!" Merci :o
Est ce que tu te mets à refléchir des fois ??!!!
Si tu utilises un champ de type varchar, alors l'ordre chronologique est fait en fonction du code ASCII des caractères !!!
Donc, ordre normal :
a
b
c
d
et avec les chiffres :
1
11
2
21
22
221
etc...
Si tu met en INT, t'as pas ce problème la... mais bon, t'as l'air mieux renseigné que moi sur la chose on dirait :o
Maintenant, t'as le choix de faire autre chose (mais vraiment t'as le choix, je te force pas !)
SELECT b FROM t ORDER BY CAST( b as UNSIGNED ); // Ou SIGNED si tu utilises des nombres négatifs.
b_medamine
Messages postés69Date d'inscriptionmardi 21 juin 2005StatutMembreDernière intervention 4 décembre 2007 29 déc. 2005 à 18:21
Trés fort que tu es !!!
Si j'ai mis en varchar, c'est que j'ai mes raisons ... Et je ne suis
pas si con pour poser telles questions.... Voilà un petit détail pour
comprendre la problématique
table T( a int, b varchar(50));
si a in '1,4,5,7,9' par exemple, b est une valeur numérique
si a in '2,3,6,8,10' par exemple, b est une chaine de caractère ....
Prière de ne pas me proposez autres solutions sur la structure de table, puisque ce n'est pas ce que je cherche....
J'ai essayé avec cette requete, mais g eu un ordre en binaire ....
b_medamine
Messages postés69Date d'inscriptionmardi 21 juin 2005StatutMembreDernière intervention 4 décembre 2007 29 déc. 2005 à 19:08
j'avais regardé la doc, et g à peu prêt écrit la même requete sauf au
lieu de passer le cast jusqu'à la fin, moi je le mettai au début juste
après le select, et d'un coup je me suis dis que ça ne marchera peut
être pas.
EZn plus des tâches que j'ai pr le moment, je ne trouve pas assez de temps pr se conbcentrer sur la chose.