Forum,
J'espère que tout le monde se porte bien.

Dans ma table INBOX_MESSAGES, j'ai un colonne CONTENT qui contient un xml.
Quand je veux extraire une valeur correspondant à une balise, j'utilise ce code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
SELECT 
	:mybalise AS Balise
	,SUBSTR(im.CONTENT,INSTR(im.CONTENT, :mybalise) + LENGTH(:mybalise) + 1,
	((INSTR(im.CONTENT, '/' || '' || :mybalise)-2)
	- (INSTR(im.CONTENT, :mybalise) + LENGTH(:mybalise) + 1)+1)) AS BALISE_VALUE
 
FROM INBOX_MESSAGES im 
INNER JOIN PERSONS p2 ON p2.PERSON_ID =im.PERSON_ID 
WHERE im.TYPE = 'D054'
	AND im.OVERALL_START_DATE >= '01/07/2020' AND im.OVERALL_START_DATE <= '30/09/2020'
;
Nom : Image 9.png
Affichages : 677
Taille : 487,3 Ko

Oui, je sais, cela ressemble furieusement à de l'excel transformé pour la cause. C'est vrai mais cela fonctionne.
Mais, je suis certain qu'il existe un moyen plus simple de trouver la balise et sa valeur. J'ai essayé avec XMLTABLE, XMLQUERY... rien n'y fait.
Si vous avez une très bonne piste, je suis preneur.