Dengan asumsi Anda memiliki XML ini dalam variabel T-SQL - maka Anda dapat menggunakan potongan kode ini:
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)
Ini memberi saya output dari:
Key1 Key2 ItemValue
1 1 value
1 2 value2
1 3 value3
2 4 value4
2 5 value5
2 6 value6
Pendekatannya adalah sebagai berikut:
-
ambil daftar
<item>
node di bawah<root>
sebagai "daftar node XML" pertama Anda dengan.nodes()
. pertama Anda metode XQuery, dan ekstrak nilai<key>
Elemen XML dalam fragmen XML itu menjadiKey1
-
ambil daftar node XML "bersarang" di dalam fragmen XML itu, menggunakan
value/params/item
XPath, untuk mendapatkan baris anak - dan ekstrak nilainya dari<key>
dan<value>
dari fragmen XML anak yang disarangkan keKey2
danItemValue