Zakładając, że masz ten kod XML w zmiennej T-SQL - możesz użyć tego fragmentu kodu:
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)
Daje mi to wynik:
Key1 Key2 ItemValue
1 1 value
1 2 value2
1 3 value3
2 4 value4
2 5 value5
2 6 value6
Podejście jest następujące:
-
weź listę
węzły pod
jako twoja pierwsza "lista węzłów XML" z pierwszym.nodes()
Metoda XQuery i wyodrębnij wartość
Element XML w tym fragmencie XML doKlucz1
-
pobierz "zagnieżdżoną" listę węzłów XML wewnątrz tego fragmentu XML, używając
value/params/item
XPath, aby uzyskać wiersze podrzędne - i wyodrębnij wartości z
iz tych zagnieżdżonych podrzędnych fragmentów XML do Key2
iItemValue