Requête SQL sur champ XML
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:
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:
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.