J'ai une colonne XML qui contient XML comme ceci:shreding colonne xml
<Set>
<Element>
<ID>
1
</ID>
<List>
<ListElement>
<Part1>
ListElement 1
</Part1>
</ListElement>
<ListElement>
<Part1>
ListElement2
</Part1>
</ListElement>
</List>
</Element>
<Element>
<ID>
2
</ID>
<List>
<ListElement>
<Part1>
ListElement3
</Part1>
</ListElement>
<ListElement>
<Part1>
ListElement4
</Part1>
</ListElement>
</List>
</Element>
</Set>
Je voudrais déchiqueter ceci dans une table de relation contenant ceci:
ID, ListElement
1, ListElement1
1, ListElement2
2, ListElement3
2, ListElement4
Je suis en mesure d'obtenir le le contenu des pièces en utilisant quelque chose comme ceci:
select
List.value('(Part1/text())[1]', 'varchar(max)') as test
from
Table CROSS APPLY
xml.nodes('// Element/List/ListElement') AS List(List)
mais je ne l'ai pas encore atteint de garder le (la valeur d'ID) « clé étrangère ».
Merci.
Meilleurs voeux,
Christian
Les espaces blancs sont là pour donner une belle apparence à cette question - ceci est juste à titre illustratif. ses. J'ai aussi besoin d'une application croisée. @tmp ne fonctionnerait pas car j'ai plusieurs lignes de choses ci-dessus. – cs0815
J'ai essayé ceci et cela ne fonctionne pas. Il identifie tous les ID d'une ligne mais renvoie null pour le test. Il ne peut pas fonctionner car il renvoie uniquement les n ID de chaque élément. Cependant chaque ELEMENT a y ListElements! Donc, le nombre de lignes retournées devrait être beaucoup plus grand que n! Fondamentalement, il y a un realtionhsip m-à-m entre Element et ListElement - c'est le défi et j'espère que cela a du sens. – cs0815
Salut. Merci, cela semble beaucoup mieux. J'essaie actuellement d'utiliser: Parent.Node.nodes ('/ List/ListElement') AS Liste (Liste) au lieu de Parent.Node.nodes ('List/ListElement') AS Liste (Liste) parce que ce dernier ne fonctionne pas. Cela semble fonctionner mais j'attends toujours - il semble prendre des âges ... – cs0815