REGEXP dans un ORDER BY [MySQL] - SQL/NoSQL - Programmation
Marsh Posté le 23-08-2007 à 10:56:39
J'ai trouvé !!
Si ça peut aider qqun, il n'y a en fait pas besoin d'utiliser les regexp :
SELECT *
FROM factures
ORDER BY SUBSTRING( N_FACTURE, 2, 6 )
Marsh Posté le 23-08-2007 à 11:02:16
j'aurais ajouter une deuxieme clause sur l'order avec un substring 1,1 en desc, car là (sans connaitre les indexs) il n'y a pas de raisons que F apparaisse avant A ( et donc que tes factures soient avant tes avoirs)
Marsh Posté le 23-08-2007 à 11:20:12
anapajari a écrit : j'aurais ajouter une deuxieme clause sur l'order avec un substring 1,1 en desc, car là (sans connaitre les indexs) il n'y a pas de raisons que F apparaisse avant A ( et donc que tes factures soient avant tes avoirs) |
exact, je l'ai d'ailleurs fait aussi
SELECT *
FROM factures
ORDER BY SUBSTRING(N_FACTURE, 2, 6) ASC, SUBSTRING(N_FACTURE, 1, 1) DESC
Marsh Posté le 23-08-2007 à 10:50:00
Bonjour !
Je viens de tester les expressions régulières avec MySQL 4.1
Ça semble fonctionner, mais je me demande s'il est possible de les utiliser sur le ORDER BY ?
En fait j'ai une table avec des factures et des avoirs, les factures commencent par F (genre F000257)
et les avoirs commencent par A (genre A000001), il y a toujours 6 chiffres après la lettre.
Un avoir est créé avec les chiffres de la facture à laquelle il correspond.
Mon but est d'afficher factures et avoirs dans un tableau
de manière à ce que un avoir apparaisse juste sous sa facture :
F000001
F000002
A000002
F000003
Par défaut, tous les avoirs sont rangés en premier (car ils commencent par A) :
A000002
F000001
F000002
F000003
J'ai essayé sans succès des requêtes comme celle-ci :
SELECT *
FROM factures
ORDER BY N_FACTURE REGEXP "^[AF][0-9]{6}"
mais il y manque clairement qqch qui dirait qu'il doit ignorer A ou F
je ne vois pas comment le faire
si qqun a une idée
Message édité par sire de Botcor le 23-08-2007 à 10:56:09
---------------
«Ceux qui croient que les peuples suivront leurs intérêts et non leurs passions n’ont rien compris au XXe siècle.» © Raymond Aron