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

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  sql: ORDER BY alphabetique pour des données du genre 12CAY

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

sql: ORDER BY alphabetique pour des données du genre 12CAY

n°1451337
papanorami​x
Posté le 03-10-2006 à 11:55:05  profilanswer
 

Bonjour,
alors j'ai un petit soucis pour trier mes données,
je voudrais les trier par ordre alphabetique sachant que mon champ (ref) contient des données du type 2FG ou 13GHJ etc.
 
Donc comment faire une requete qui trie sans tenir compte des chiffres qui précedent les lettres.
 
J'ai vu qu'on pouvait utiliser LTRIM par exemple, mais je ne vois pas trop comment  :??:  
 
Merci pour le coup de pouce !
Bonne journée  :p

mood
Publicité
Posté le 03-10-2006 à 11:55:05  profilanswer
 

n°1451370
MagicBuzz
Posté le 03-10-2006 à 12:22:04  profilanswer
 

1/ quel SGBD ?
2/ que veux-tu exactement ?
3/ qu'est-ce que tu obtiens ?
4/ mysql supporte un tri "naturel", c'est à dire qu'il comprends que "13GHJ" est après "2FG" quand on "comprend" les nombres (aucun autre SGBD ne le permet, le 13 se retrouvant avec le 2 puisque ce sont des chaines de caractères)

n°1451382
papanorami​x
Posté le 03-10-2006 à 12:44:33  profilanswer
 

C'est sur une base MySql
Lorsque je fais un ORDER BY ref, j'obtiens
12vfr
13gt
2rt
21df
...
 
je voudrais que mysql me trie ces valeur non pas par les nombre qui précedent les lettres, mais par les lettres elles-meme:
21df
13gt
2rt
12vfr
...
 
pour ce qui est de ton 4/ mysql ne me les trie pas comme tu le mets, que faut-il faire justement pour qu'il me fasse un trie "naturel" ? ORDER BY NATURAL (ref) ?

n°1451452
MagicBuzz
Posté le 03-10-2006 à 14:22:15  profilanswer
 

ok, hmmm, ça me semble quelque peut complexe ton truc...
 
regarde si MySQL supporte dans ses fonctions de chaîne quelque chose à partir d'expressions régulières.
 
Ainsi, tu pourras faire le ORDER BY sur ce qui correspond à ce qui suit le nombre. Genre un truc du genre : order by regmatch('[0-9].(*.)') (la fonction et l'expression régulières sont au pifomètre et à titre d'exemple hein)

n°1451459
ZeBix
edit > preview
Posté le 03-10-2006 à 14:33:49  profilanswer
 

Le problème de TRIM() c'est qu'ellefonctionne sur un nombre fixe de caractères et qu'ici, le nombre de chiffres semble varier alétoirement.
 
Mais en revanche dis-nous : est-ce que la chaîne de caractères qui suit les chiffres en question a-t-elle une longueur fixe ?  
Si c'est le cas, tu pourrais "padder" la string avec des 0 non significatifs et faire un trim() :)

n°1451510
papanorami​x
Posté le 03-10-2006 à 15:24:05  profilanswer
 

non, malheureusement, les réferences ont des longueurs variables autant du coté des chiffres (2 maxi quand meme) et des lettres.
Il faudrait en effet une sorte de fonction regex

n°1451522
ZeBix
edit > preview
Posté le 03-10-2006 à 15:35:14  profilanswer
 

La solution devrait être alors du côté de REGEXP
 
*edit*  
 
Le truc c'est que je pense pas qu'il soit possible de trier sur un champ qui ne se trouve pas dans le Select donc tu devras d'une manière ou d'une autre le faire figurer ...
 
Du genre :  
 
SELECT ref, ref REGEXP '[:alpha:]' as tri
from matable
order by tri
 
(au pif aussi, j'ai pas essayé, et puis en plus je pense que le REGEXP retourne pas sa sélection, bref à investiguer)
 
Faudrait pas que dans la chaîne alphabétique qui suit tes chiffres tu aies d'autres chiffres hein :)


Message édité par ZeBix le 03-10-2006 à 15:42:46
n°1451560
papanorami​x
Posté le 03-10-2006 à 16:16:25  profilanswer
 

ben si, il peut aussi y avoir des chiffres...
 
Je vais voir du coté de REGEXP

n°1451571
papanorami​x
Posté le 03-10-2006 à 16:28:43  profilanswer
 

ton SELECT ne fonctionne pas...
 
sinon je peux toujours retrier mon tableau avec php. Mais bon c'est pas l'ideal

n°1452821
papanorami​x
Posté le 05-10-2006 à 14:52:40  profilanswer
 

pas d'idées ?

mood
Publicité
Posté le 05-10-2006 à 14:52:40  profilanswer
 

n°1452904
MagicBuzz
Posté le 05-10-2006 à 16:54:25  profilanswer
 

Quand on te dis de regarder du côté de la doc des expressions régulières :o
 
Voilà ce que donne ta requête SOUS ORACLE.
Donc démerde-toi avec la doc de MySQL pour trouver l'équivalent, et ne me dit pas que mon truc ne marche pas : oui, il ne marche pas sous MySQL, ou alors c'est une coincidence fortuite.
 


SELECT codpro
FROM pro
WHERE codsoc = 2
order by REGEXP_replace(codpro, '^([[:digit:]]*)(.*)$', '\2')


Message édité par MagicBuzz le 05-10-2006 à 19:29:50
n°1453006
papanorami​x
Posté le 05-10-2006 à 18:26:43  profilanswer
 

ben je suis allé voir...
 
... j'y retourne !
 
merci

n°1729618
grosbin
OR die;
Posté le 07-05-2008 à 16:04:26  profilanswer
 

Sujet intéressant la fonction n'est pas dispo sous mysql version 5 .. je peux effectuer le Replace, mais sans expression régulière
 ( la fonctionnalité permettrait d'économiser un temps considérable dans mon taff )
Au lien de ça .. rechercher les enregistrements similaires .. faire le ereg_replace en php puis l'update .. à chaque fois .. frak ..


Message édité par grosbin le 07-05-2008 à 16:08:17

---------------
Photos Panoramiques Montagnes Haute Savoie
n°1817265
weird
Ducati Powered
Posté le 26-11-2008 à 19:01:21  profilanswer
 

Je déterre ce sujet, mais j'ai été confronté à ce genre de problématique :
 
cas typique, j'ai des champs suivants :
 
weblogic1
weblogic10
weblogic2
weblogic3
 
Le weblo 10 n'a rien à faire là avec mon 'order by'.
 
Mais en faisant un 'order by length(mon_champ),monchamp' , c'est ok.
 
Valà valà...
 
 


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

  sql: ORDER BY alphabetique pour des données du genre 12CAY

 

Sujets relatifs
[script shell] grep -f sur de grandes quanités de données[ASP.NET] Tableau de bord de ce genre , est-ce Realisable ?
Stockage de donnéesrecherche de données dans excel sans ouvrir les fichiers
AJAX, renvoi de donnéesConseil sur une stratégie de base de données
suppression plage données[résolu]Importer une base de données
Question sur les types de données de MySQLgraphique a plage de donnees variable
Plus de sujets relatifs à : sql: ORDER BY alphabetique pour des données du genre 12CAY


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