Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1199 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [Oracle] Option de tri pour ORDER BY

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Oracle] Option de tri pour ORDER BY

n°1837886
zizou771
http://mobiles.forumpro.fr
Posté le 14-01-2009 à 15:44:53  profilanswer
 

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.

mood
Publicité
Posté le 14-01-2009 à 15:44:53  profilanswer
 

n°1837895
skeye
Posté le 14-01-2009 à 16:04:24  profilanswer
 

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 -
n°1837896
zizou771
http://mobiles.forumpro.fr
Posté le 14-01-2009 à 16:08:00  profilanswer
 

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

n°1837933
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 14-01-2009 à 17:23:05  profilanswer
 

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)
n°1837943
olivthill
Posté le 14-01-2009 à 17:39:39  profilanswer
 

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

n°1837946
skeye
Posté le 14-01-2009 à 17:43:00  profilanswer
 

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 -
n°1837948
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 14-01-2009 à 17:45:14  profilanswer
 

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)
n°1837950
olivthill
Posté le 14-01-2009 à 17:49:49  profilanswer
 

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 !)

n°1837952
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 14-01-2009 à 17:53:18  profilanswer
 

olvthillG [:sadnoir]


---------------
J'ai un string dans l'array (Paris Hilton)
n°1837953
skeye
Posté le 14-01-2009 à 17:55:29  profilanswer
 

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 -
mood
Publicité
Posté le 14-01-2009 à 17:55:29  profilanswer
 

n°1838019
mrbebert
Posté le 14-01-2009 à 22:43:00  profilanswer
 

skeye a écrit :


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

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

n°1838159
zizou771
http://mobiles.forumpro.fr
Posté le 15-01-2009 à 11:48:46  profilanswer
 

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.

n°1838207
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 15-01-2009 à 12:14:33  profilanswer
 

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)
n°1838209
skeye
Posté le 15-01-2009 à 12:15:26  profilanswer
 

zizou771 a écrit :

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


[:sadnoir]


---------------
Can't buy what I want because it's free -
n°1838216
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 15-01-2009 à 12:18:25  profilanswer
 


oui hein ? [:ddr555]


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

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [Oracle] Option de tri pour ORDER BY

 

Sujets relatifs
[oracle] Récupération d'un nombre dans un champ texteRequete GROUP BY ou DISTINCT ou impossible a faire ?
[SQL] Requete Group By en prenant les infos du plus petit[ORACLE] utl_file en remote connection
PHP4+Oracle 8=> CSVscript Oracle vers PostgreSQL
drivers OracleMigration Oracle 8 vers 10 et application VB5
Modification de la taille d'un champ sous OracleRequête SQL ORDER BY... syntaxe
Plus de sujets relatifs à : [Oracle] Option de tri pour ORDER BY


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR