classee un champ de type char

classee un champ de type char - SQL/NoSQL - Programmation

Marsh Posté le 04-02-2008 à 23:20:27    

Bonjour
 
Lorsque j'execute cette requete :  
 
select poste,num_avis from avis
where poste=1
order by num_avis
vu que num_avis et declaré Char(6) je recois le resultat suivant :
 
poste      num_avis      
  1            1              
  1            10            
  1            18            
  1            2              
  1            26            
  1            3              
 
Mais je veux avoir comme resultat :
 
poste      num_avis      
  1            1              
  1            2              
  1            3              
  1            10            
  1            18            
  1            26            
 
Y a t il SVP un moyen pour que j ai ce resultat, parceque je ne peux pas changer la declaration du champs num_avis
 
merci infiniment pour votre aide  
 
 
 
 
 
 
     

Reply

Marsh Posté le 04-02-2008 à 23:20:27   

Reply

Marsh Posté le 05-02-2008 à 09:17:34    

bah c'est un peu bête de mettre des nombres dans un champ char...
et comme d'hab il faut dire sur quel sgbd tu bosses :fou: ca devient une mauvaise habitude ici
comme on a pas cette info, cherches du côté des fonctions de transformation de chaînes de caractères

Reply

Marsh Posté le 05-02-2008 à 14:23:42    

Re
ma base de donnée et developpée  sous informix et j ai un servuer UNIX

Reply

Marsh Posté le 11-02-2008 à 10:58:18    

trois solutions :
 
- lors du select, cast la colonne en number.
exemple de syntaxe avec Oracle :

Code :
  1. SELECT poste,num_avis FROM avis
  2. WHERE poste=1
  3. ORDER BY to_number(num_avis)


 
- utilise une fonction de padding afin d'ajouter des 0 ou espaces facultatifs devant la série de chiffres, afin que le tri alphabétique fonctionne
exemple de syntaxe Oracle :

Code :
  1. SELECT poste,num_avis FROM avis
  2. WHERE poste=1
  3. ORDER BY lpad(num_avis, 2, '0')


 
- si le sgbd le supporte utilise le natural sort
pas d'exemple de syntaxe, ça n'existe que sous mysql et postre/sql à ma connaissance, et c'est pas standard

Reply

Sujets relatifs:

Leave a Replay

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