Forudsat at du har denne XML i en T-SQL-variabel - så kan du bruge dette kodestykke:
DECLARE @input XML = '...(your XML here).....'
SELECT
Key1 = Item.value('(key)[1]', 'int'),
Key2 = Item2.value('(key)[1]', 'int'),
ItemValue = Item2.value('(value)[1]', 'varchar(50)')
FROM
@input.nodes('/root/item') AS T(Item)
CROSS APPLY
item.nodes('value/params/item') AS T2(Item2)
Dette giver mig et output på:
Key1 Key2 ItemValue
1 1 value
1 2 value2
1 3 value3
2 4 value4
2 5 value5
2 6 value6
Fremgangsmåden er følgende:
-
tag fat i listen over
noder under
som din første "liste over XML-noder" med den første.nodes()
XQuery-metoden, og udtræk værdien af
XML-element i det XML-fragment tilKey1
-
tag den "indlejrede" liste over XML-noder inde i det XML-fragment ved hjælp af
værdi/params/item
XPath, for at hente de underordnede rækker - og udtrække værdierne fra
ogfra disse indlejrede underordnede XML-fragmenter til Nøgle2
ogItemValue