#1 Wed 05 October 2016 20:56
- tta
- Participant occasionnel
- Lieu: Montréal
- Date d'inscription: 4 Oct 2005
- Messages: 39
Extraction d'une valeur dans une chaîne de caractère
Bonjour,
J'ai une table qui contient des attributs descriptifs dans cinq champs. J'aimerai extraire dans l'un des champs, <PLAN_INDEX> la valeur qui se situe à partir de la 13e position de la chaîne de caractères.Je n'arrive pas à trouver la bonne combinaison dans les fonctions d'extraction de chaîne de caractères Instr et Mid$ à partir d'une mise à jour dans une colonne nouvellement créée. Dans le fichier joint, l'encadré en rouge illustre la chaîne que j'aimerai extraire dans ma nouvelle colonne et qui correspond au numéro d'index.
PS. En passant, le numéro d'index contient le même nombre de caractère pour cette table à l'exception de quelques tables que je n'ai pas encore eu le temps de passer au travers... Les exceptions figurent dans quelques lignes qui comptent deux ou trois caractères de plus
Merci d'avance pour vos suggestions et solutions à ma question.
Hors ligne
#2 Thu 06 October 2016 10:09
- nicoboud
- Membre
- Lieu: Nantes
- Date d'inscription: 12 Oct 2007
- Messages: 860
Re: Extraction d'une valeur dans une chaîne de caractère
Bonjour,
Votre fichier n'est pas joint. Probablement parce qu'il est trop gros (pièces jointes acceptées si >500 Ko).
A priori (sans connaitre votre fichier), si l'extraction doit toujours se faire à partir du 13ème caractère et que la chaine à extraire est de longueur fixe L :
Code:
Mid$(PLAN_INDEX,13,L)
mais je suppose que votre soucis, c'est d'avoir la formule dans les cas où la longueur de chaine à extraire varie.
Pour y arriver, il faut que la fin de chaine à extraire soit suivie d'un même caractère, _ (underscore) par exemple, et que ce caractère ne soit pas présent dans la chaine à extraire.
Si ces conditions sont respectées, la formule serait :
Code:
Mid$(PLAN_INDEX,13,InStr(13,PLAN_INDEX,"_"))
Nicolas.
Co-modérateur du forum Mapinfo
Utilisateur Mapinfo et QGIS
Hors ligne
#3 Thu 06 October 2016 15:17
- tta
- Participant occasionnel
- Lieu: Montréal
- Date d'inscription: 4 Oct 2005
- Messages: 39
Re: Extraction d'une valeur dans une chaîne de caractère
Bonjour Nico,
Merci pour votre réponse à ma question. En effet, la première fonction répond à ma question Mid$(PLAN_INDEX,13,4) qui extrait les 4 valeurs de la chaîne de caractère. Cependant, j'ai terminé la vérification des tables à extraire et deux cas de figure se présentent dans les fichiers pour l'extraction des numéros d'index. Malheureusement, le fichier attaché dans mon post précédent n'a pas passé, pourtant moins de 500ko. Je viens de le réduire en espérant qu'il passe...
Sinon voici un exemple du contenu de la colonne <PLAN_INDEX> et de la chaîne de caractère à extraire: UW_Volume01_0041_1949.pdf. La chaîne de caractère à extraire est 0041. L'autre cas de figure la colonne est: UW_Volume01_0047-2_1964.pdf. Dans ce dernier cas, la chaîne de caractère à extraire est 0047-2.
Merci de votre aide.
Cordialement
Hors ligne
#4 Fri 07 October 2016 11:47
- nicoboud
- Membre
- Lieu: Nantes
- Date d'inscription: 12 Oct 2007
- Messages: 860
Re: Extraction d'une valeur dans une chaîne de caractère
Bonjour,
J'ai fait un oubli dans ma 2nd formule :
Code:
Mid$(PLAN_INDEX,13,InStr(13,PLAN_INDEX,"_")-13)
Celle-là devrait fonctionner.
InStr renvoie la position par rapport à la totalité du champ, et non la position à partir de la position 13.
Nicolas.
Co-modérateur du forum Mapinfo
Utilisateur Mapinfo et QGIS
Hors ligne
#5 Fri 07 October 2016 14:49
- tta
- Participant occasionnel
- Lieu: Montréal
- Date d'inscription: 4 Oct 2005
- Messages: 39
Re: Extraction d'une valeur dans une chaîne de caractère
Bonjour Nico,
Merci beaucoup Nico la formule a fonctionné nickel. Tu m'as sauvé des heures et des heures de plaisirs...
Bon week-end!
Hors ligne