Bonjour,

Je cherche à savoir si il est possible de façon simple de compter le nombre d'occurences d'un terme dans un champ XML ou de simplifier mon futur traitement.

Je m'explique : j'ai une table (contenant plus d'un million d'entrés) qui contient un champ id et un champ xml qui ressemble à :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
<root>
	<elem attr1="val1" attr2="val2"/>
	<elem attr1="val3" attr2="val4"/>
	<elem attr1="val5" attr2="val6"/>
</root>
je veux créer une table

ID / ATTR1 / ATTR2

Je pensais faire du T-sql en passant par une table temporaire du type

ID / ChampXML / NbOccurences (avec NbOccurence basé sur le nombre de <elem attr1 du champ)

Et ensuite faire une double boucle en utilisant une requête du genre
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
Select id
	,ChampXML.value('(root/elem/@attr1)[@i]','nvarchar(max)')
	,ChampXML.value('(root/elem/@attr2)[@i]','nvarchar(max)')
from ma tableTemp
Avec @i de 1 à NbOccurences

Sauf que mise à part passer par une fonction je ne vois pas d'autres solutions pour le nombre d'occurences.

Si quelqu'un a des idées, je suis preneur.
D'avance merci.