Bonjour tout le monde,

Je galère pour connaître la meilleure solution pour récupérer une partie d'une chaine.
Voici quelques exemples de chaine :
"RUE des jonquilles ZI sud CC leclerc"
"RUE des jonquilles "
"RUE des jonquilles ZI sud"
"CC leclerc RUE des jonquilles"
Explication : je souhaite récupérer les chaines "des jonquilles", "sud" et "leclerc" sachant que j'ai déjà déterminé les types "RUE", "ZI" et "CC".
type_voie = 'RUE', type_lieu = 'ZI', type_secteur = 'CC'.
Mon code fonctionne quand j'ai les 3 types mais quand j'ai 1 ou 2 types, ça ne fonctionne plus puisqu'un type est à blanc.

Mon code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
ma_rue = 'RUE des jonquilles ZI sud CC leclerc',
type_voie = 'RUE',
type_lieu = 'ZI',
type_secteur = 'CC'.
 
SELECT REGEXP_REPLACE(REGEXP_REPLACE(REGEXP_REPLACE(ma_rue, '^.*'||type_voie||'.', ' '), type_lieu || '.*$', ''), type_secteur || '.*$', '') FROM DUAL;
traduit, ça donne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
select REGEXP_REPLACE(REGEXP_REPLACE(REGEXP_REPLACE('RUE des jonquilles ZI sud CC leclerc', '^.*RUE.', ' '), 'ZI.*$', ''), 'CC.*$', '')
from dual;
Avec ce code j'ai récupère "des jonquilles" et je lance 2 fois ce code en changeant type_voie par type_lieu puis type_secteur.

* Merci *