[Oracle] Option de tri pour ORDER BY

Option de tri pour ORDER BY [Oracle] - SQL/NoSQL - Programmation

Marsh Posté le 14-01-2009 à 15:44:53    

Bonjour,
lorsque je trie une liste avec des caractères spéciaux, ceux-ci sont placés en 1er.
ex:
Code :
 

Code :
  1. SELECT col1 FROM ma_table ORDER BY 1


 
*
A
B

 
Je souhaiterai que ce * apparaisse en dernier et j'ai vu qu'il existait l'option:
Code :
 

Code :
  1. ORDER BY NLSSORT(1, 'NLS_SORT=BINARY')


 
Mais lorsque je l'utilise j'ai le message d'erreur:
ORA-01785: ORDER BY item must be the number of a SELECT-list expression
Avez-vous une idée?
Merci d'avance.

Reply

Marsh Posté le 14-01-2009 à 15:44:53   

Reply

Marsh Posté le 14-01-2009 à 16:04:24    

version d'oracle? t'as essayé avec le nom de la colonne au lieu de son indice?


Message édité par skeye le 14-01-2009 à 16:04:58

---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 14-01-2009 à 16:08:00    

c'est la version 10g.
J'ai aussi essayé avec le nom de colonne => même pb!

Reply

Marsh Posté le 14-01-2009 à 17:23:05    

et

Code :
  1. SELECT col1 FROM ma_table ORDER BY NLSSORT('col1', 'NLS_SORT=BINARY')


ça donne quoi ?


Message édité par Harkonnen le 14-01-2009 à 17:30:09

---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 14-01-2009 à 17:39:39    

Remplacer l'étoile par une barre oblique qui se trouve à la fin de l'aphabet:

SELECT decode(col1, '*', '|', col1) FROM ma_table ORDER BY 1

Reply

Marsh Posté le 14-01-2009 à 17:43:00    

olivthill a écrit :

Remplacer l'étoile par une barre oblique qui se trouve à la fin de l'aphabet:

SELECT decode(col1, '*', '|', col1) FROM ma_table ORDER BY 1



...et tu fais ça pour tous les caractères spéciaux? [:el g]


Message édité par skeye le 14-01-2009 à 17:43:09

---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 14-01-2009 à 17:45:14    

moi je dis que zizou il a oublié les quotes entourant le nom de la colonne ! le NLSSORT je l'ai utilisé un paquet de fois, et sans souci [:dawao]


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 14-01-2009 à 17:49:49    

Tu me lance un défi, skeye ?
 
Bon, s'il fallait le faire pour tous les caractères antérieurs au caractère "0", alors faire :

Spoiler :

SELECT decode(greatest(col1, '/'), '/', '|', col1) FROM ma_table ORDER BY 1
 
La barre oblique est avant le '0', et la barre verticale est après le 'z'.

(Trop facile le SQL d'Oracle !)

Reply

Marsh Posté le 14-01-2009 à 17:53:18    

olvthillG [:sadnoir]


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 14-01-2009 à 17:55:29    

olivthill a écrit :

Tu me lance un défi, skeye ?
 
Bon, s'il fallait le faire pour tous les caractères antérieurs au caractère "0", alors faire :

Spoiler :

SELECT decode(greatest(col1, '/'), '/', '|', col1) FROM ma_table ORDER BY 1
 
La barre oblique est avant le '0', et la barre verticale est après le 'z'.

(Trop facile le SQL d'Oracle !)


 
figure 1 : enfoncer un clou avec un marteau-piqueur.[:petrus75]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 14-01-2009 à 17:55:29   

Reply

Marsh Posté le 14-01-2009 à 22:43:00    

skeye a écrit :


 
figure 1 : enfoncer un clou avec un marteau-piqueur.[:petrus75]

C'est toute la philosophie d'Oracle [:cosmoschtroumpf]

Reply

Marsh Posté le 15-01-2009 à 11:48:46    

en fait j'ai trouver (on plutot on m'as aidé):
 order by REPLACE(col1,'*','zzz')
Et le message d'erreur apparait quand je fait des UNION ALL entre plusieurs requete, donc je suis obligé de tout regrouper en une seule requete.

Reply

Marsh Posté le 15-01-2009 à 12:14:33    

mrbebert a écrit :

C'est toute la philosophie d'Oracle [:cosmoschtroumpf]


ah là t'as pas tort [:blessure]


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 15-01-2009 à 12:15:26    

zizou771 a écrit :

order by REPLACE(col1,'*','zzz')


[:sadnoir]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 15-01-2009 à 12:18:25    


oui hein ? [:ddr555]


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed