|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre du Club
![]() Inscription : septembre 2006 Messages : 339 ![]() |
bonjour,
j'ai une liste de valeurs à trier ma colonne c'est du varchar2, mais je veux que le tri soit significatif. ex: 1 -10 11 2 23 alors qu'évidemment je veux: 1 2 10 11 23 j'ai trouvé un post qui y ressemble mais le cast ne fonctionne pas du tout (oralce9) |
|
|
00
|
|
|
#2 |
![]() ![]() Consultant en Business Intelligence Inscription : janvier 2007 Messages : 1 192 ![]() |
Bonjour,
pourquoi ne pas utiliser un to_number ? |
|
|
00
|
|
|
#3 |
|
Expert Confirmé Sénior
![]() Inscription : juillet 2003 Messages : 3 450 ![]() |
Tu n'as QUE des nombres dans ce varchar2 ?
Si oui tu fais un |
|
|
00
|
|
|
#4 |
|
Membre du Club
![]() Inscription : septembre 2006 Messages : 339 ![]() |
bien vu
c juste que j'ai d'autres valeurs non numériques la dedans!! (des tirets), donc je veux ca en fait: - - - - 1 2 11 12 20 21 etc.. ) |
|
|
00
|
|
|
#5 |
|
Expert Confirmé Sénior
![]() Inscription : juillet 2003 Messages : 3 450 ![]() |
Tout dépend comment tu veux trier !!
Le numérique avant le char ou après ou au milieu ? Tu as dit : -10 je veux le trier en 10 Si tu as '9A2', tu le mets où ? Bref, précise ta demande. Edit : J'ai relu, tu dis avoir d'autres valeurs non numériques (des tirets). Si j'ai bien suivi, tu as soit les caractères "0" à "9" et les "-" |
|
|
00
|
|
|
#6 | ||
|
Expert Confirmé Sénior
![]() Inscription : juillet 2003 Messages : 3 450 ![]() |
Au pire pour trier des champs nombres/caract dans un VARCHAR2 avec les nb en premier et les chars ensuite, voici un code (attention, le with c'est du 10 pour un test, faut prendre juste le select)
Code :
|
||
|
|
00
|
|
|
#7 |
|
Membre du Club
![]() Inscription : septembre 2006 Messages : 339 ![]() |
j'ai que des numériques (négatifs ou positifs) et des tirets.. c tout!
|
|
|
00
|
|
|
#8 |
|
Membre du Club
![]() Inscription : septembre 2006 Messages : 339 ![]() |
je ne vois comment adapter ton code!! pour une colonne donnée!
|
|
|
00
|
|
|
#9 | ||
|
Expert Confirmé Sénior
![]() Inscription : juillet 2003 Messages : 3 450 ![]() |
Code :
|
||
|
|
00
|
|
|
#10 |
|
Membre du Club
![]() Inscription : septembre 2006 Messages : 339 ![]() |
oui merci..
ca marche! j'ai même trouvé comment faire mieux et beaucoup plus simple (je récupère mes valeurs numériques dans une colonne à part COL et je fais un select dans un autre select - le select du milieu se charge de faire le tri sur COL (integer), et le select extérieur se charge de reconstituer ma colonne en ORIGINAL_COL(varchar2) et ca marche très bien) Le pb avec ton code c'est que tu remplaces les (-) par des (-1)logiques pour faire le tri, sauf que je veux garder les valeurs signées dans ma liste, du coup je remplace -1 par -10000 ou plus (en valeur absolue) ou idéalement par [-1*(select max(COL) from MyTable)] mais pour ce cas, la requete prend considérablement plus de temps! voila.. |
|
|
00
|
|
|
#11 | |
|
Expert Confirmé Sénior
![]() Inscription : juillet 2003 Messages : 3 450 ![]() |
Purée, t'es pas précis toi !!
Citation:
Code :
ORDER BY decode(col, '-', 0, 1), le_tri_nombre_qui_marche |
|
|
|
00
|
|
|
#12 | ||
|
Expert Confirmé Sénior
![]() ![]() ![]() Laurent SchneiderAdministrateur de base de données Inscription : décembre 2005 Messages : 2 927 ![]() |
Code :
|
||
|
00
|
|
|
#13 | ||
|
Expert Confirmé Sénior
![]() ![]() ![]() Laurent SchneiderAdministrateur de base de données Inscription : décembre 2005 Messages : 2 927 ![]() |
ou, plus robuste :
Code :
|
||
|
00
|
Copyright © 2000-2012 - www.developpez.com