Tom's Guide > Forum > Programmation > Tri en mysql
Mot :    Pseudo :           
 

Bonjour, je veux trier mes enregistrements sur un champ appelé code_parcelle
le probleme c'est un var char et dans les cas suivants cela marche pas comme je veux

S13
S250
S30

alors que je voudrais

S13
S30
S250

je suis sous mysql 3.X

merci par avance !!!

Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

Si tu as toujours une lettre+ des chiffres, tu peux faire ça

(attention, c'est du langage oracle, à toi de traduire)

ORDER BY to_number(substr (mon_code,2))

en gros, substr (...) te permets de récupérer 30 ,50,...

ensuite, le to_number fait ainsi :
en caractères 30<50 mais 130<50 (en effet, 1<5) d'où la transformation nécessaire en nombre

Répondre à szdavid

en mysql ca fait ca

order by CAST(SUBSTRING(mon_code,2) AS UNSIGNED)

mais cast c'est valable pour la version 4 et pas la 32
houinnnnnnnnnn :-(

comment faire !!!

Répondre à bear13

Salut qu est ce qui t oblige a rester sous la version 3?

Répondre à showie

ben mon serveur est sous mac OS 10.2 et je ne sais pas s'il va suporter la version 4. j'ai peur de tou planter.

:)

Répondre à bear13

il ne faut jamais partir de ce principe "ça marche pas sous cette version mais sous celle là ==> hop, je migre !"

En production, tu peux totalement tout planter si tu ne t'es pas assuré que le reste était qualifié ! !

en test ou chez toi, ok, pas de problème mais attention dans les autres cas !

Répondre à szdavid

Je ne pousse personne a migrer mais je pense ue entre la version 3 et la version 4 il y a eu de bonne évolution et meme si je poussais j ai hate d avoir la 5 qui a l air pas mal du tout !

Répondre à showie

Oups j ai oublier de donner ma solution dans le dernier post donc voila en bidouillant et en fesant un order by longueur _chaine,chaine ca devrais marcher !

Répondre à showie

désoler j ai des pb a poster
et donc au cas ou ca ne marche pas
je t ai prévus une solution de rechange
que voici :


donc la en gros tu remplie la fin de ta chaine de '!'
et après tu cherche la premiére accurence de '!'
et son emplacement est la longeur de ta chaine!

Et ca marche! sinon je fait pénitence de pc et de café pendant 2h ... euh ... 1 h ?

Répondre à showie

bon j arrive pas a poster le code alors eux voici

Code :
  1. SELEC T champ1, champ2, champ3, locate( "!", rpad( champ3, 8, "!" ) ) AS L FROM "table" WHERE 1 ORDER BY L,champ3

Répondre à showie

Youhou tu as testé?

Répondre à showie

peut-être un changement de gestion de tes champs pourrait suffire (si tu en as la possibilité).

Donc de rentrer
S013
S030
S150

(tout dépend de si tu peux ou pas le faire)

Répondre à Resurectin
Tom's Guide > Forum > Programmation > Tri en mysql
Aller à :

Il y a 1118 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens