|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Étudiant Inscription : juillet 2011 Messages : 8 ![]() |
Bonjour,
J'ai une base de données Ogr dont un attribut UM est une chaine de caractères qui possède un certain nombre de fois une série de 5 chiffres. J'aimerais savoir s'il est possible d'extraire séparement les différentes séries de 5 chiffres de chaque ligne et celà pour toutes les lignes de ma base. |
|
|
00
|
|
|
#2 |
![]() ![]() |
Donne la structure de la table, un petit jeu de données et le résultat attendu si tu veux qu'on t'aide efficacement.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
00
|
|
|
#3 |
|
Invité de passage
![]() Étudiant Inscription : juillet 2011 Messages : 8 ![]() |
UM est l'unique attribut de la table Org. Par exemple si j'ai les deux lignes suivantes de UM :
uN = 25415, bureau = 2B; uN = 15489, bureau = 12A uN = 86764, bureau = 4M; uN = 15647, bureau = 2C; uN = 48789, bureau = 4A je veux pouvoir extraire : 25415 15489 86764 15647 48789 |
|
|
00
|
|
|
#4 | ||||||
![]() ![]() |
Si les deux lignes de données que tu fournis dans ton message sont deux des lignes de la table, ça ne va pas être facile puisque nous sommes en présence d'une colonne multivaluée, ce qui est contraire aux principes des bases de données relationnelles. J'espère qu'il s'agit d'un import de données mal foutu et pas de la structure réelle de la BDD !
![]() Travaillons avec la première chaîne de caractères 'uN = 25415, bureau = 2B; uN = 15489, bureau = 12A' et avec les fonctions de chaînes de caractères de MySQL. 1) Quelle est la position de la première occurrence de 'uN = ' ? Code :
SELECT INSTR('uN = 25415, bureau = 2B; uN = 15489, bureau = 12A', 'uN = ') 2) Récupérons les 5 caractères qui suivent 'uN = ' : Code :
'25415' 3) Supprimons la première occurrence de 'uN = ' de la chaîne de départ : Code :
'bureau = 2B; uN = 15489, bureau = 12A' 4) Refaisons la même opération qu'en 2 pour avoir le second uN : Code :
15489 Si tu bidouilles ça dans une procédure SQL qui injecte les résultats intermédiaires dans une table temporaire puis qui interroge celle-ci, tu devrais avoir ton résultat mais je reconnais que ça va être galère ! Un coup de Explode en PHP serait à mon avis plus simple ! Bon courage !
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
||||||
|
00
|
|
|
#5 |
|
Invité de passage
![]() Étudiant Inscription : juillet 2011 Messages : 8 ![]() |
Merci beaucoup pour ta réponse
|
|
|
00
|
|
|
#6 |
|
Invité de passage
![]() Étudiant Inscription : juillet 2011 Messages : 8 ![]() |
Est ce que ce serait plus faisable si on avait :
uN = 21564, agence = M; uN = 56476, agence = M... c'est à dire toujours la même chaine de caractères après 'uN = _ _ _ _ _ '? |
|
|
00
|
|
|
#7 | ||
![]() ![]() |
Citation:
Par contre, si tu as la possibilité de changer la structure des données qui donnent cette colonne multi-valuée, fais-le ! Ce sera beaucoup plus simple avec des données correctement modélisées ! Bis repetita : Citation:
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
||
|
00
|
|
|
#8 |
|
Invité de passage
![]() Étudiant Inscription : juillet 2011 Messages : 8 ![]() |
Je ne pense pas pourvoir modifier la structure. Je voulais savoir si les données autre que uN=21564 et uN=56476 sont un problème.
|
|
|
00
|
|
|
#9 |
![]() ![]() |
Non puisque j'ai réussi à extraire les deux données. Ce qui pose problème, c'est le fait qu'il y a plusieurs uN sur la même ligne.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
00
|
Copyright © 2000-2012 - www.developpez.com