मान लें कि आपके पास यह एक्सएमएल टी-एसक्यूएल वेरिएबल में है - तो आप कोड के इस स्निपेट का उपयोग कर सकते हैं:
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)
यह मुझे निम्न का आउटपुट देता है:
Key1 Key2 ItemValue
1 1 value
1 2 value2
1 3 value3
2 4 value4
2 5 value5
2 6 value6
दृष्टिकोण निम्नलिखित है:
-
<item>
की सूची को पकड़ो<root>
. के अंतर्गत नोड्स पहले.nodes()
. के साथ आपकी पहली "XML नोड्स की सूची" के रूप में XQuery विधि, और<key>
. का मान निकालें उस XML फ़्रैगमेंट में XML तत्वKey1
. में -
value/params/item
का उपयोग करके उस XML फ़्रैगमेंट के अंदर XML नोड्स की "नेस्टेड" सूची प्राप्त करें XPath, चाइल्ड रो प्राप्त करने के लिए - और<key>
. से मान निकालने के लिए और<value>
उन नेस्टेड चाइल्ड XML फ़्रैगमेंट सेKey2
. में औरItemValue