set @xmlData='<?xml version="1.0"?>
<ArrayOfSpangemansFilter xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<SpangemansFilter>
<FilterID>1219</FilterID>
<Name>Fred</Name>
<Code>510</Code>
<Department>N</Department>
<Number>305327</Number>
</SpangemansFilter>
<SpangemansFilter>
<FilterID>3578</FilterID>
<Name>Gary</Name>
<Code>001</Code>
<Department>B</Department>
<Number>0692690</Number>
</SpangemansFilter>
<SpangemansFilter>
<FilterID>3579</FilterID>
<Name>George</Name>
<Code>001</Code>
<Department>X</Department>
<Number>35933</Number>
</SpangemansFilter>
</ArrayOfSpangemansFilter>'
SELECT
ref.value('FilterID[1]', 'int') AS FilterID ,
ref.value('Name[1]', 'NVARCHAR (10)') AS Name ,
ref.value('Code[1]', 'NVARCHAR (10)') AS Code ,
ref.value('Department[1]', 'NVARCHAR (3)') AS Department,
ref.value('Number[1]', 'int') AS Number
FROM @xmlData.nodes('/ArrayOfSpangemansFilter/SpangemansFilter')
xmlData( ref )
उत्पादन:
FilterID Name Code Department Number
----------- ---------- ---------- ---------- -----------
1219 Fred 510 N 305327
3578 Gary 001 B 692690
3579 George 001 X 35933
नोट:[1]
यह इंगित करने के लिए आवश्यक है कि आप अनुक्रम के पहले मान का चयन करना चाहते हैं क्योंकि क्वेरी प्रति पंक्ति एक से अधिक मिलान मान लौटा सकती है (कल्पना करें कि आपके XML में कई FilterIDs प्रति SpangemansFilter हैं)।
मुझे लगा कि यह जानना उपयोगी है, इसलिए मैंने गुगल किया और कई पोस्ट तब तक पढ़ी जब तक मुझे यह वाला।
अपडेट करें फ़ाइल से लोड करने के लिए:
DECLARE @xmlData XML
SET @xmlData = (
SELECT * FROM OPENROWSET (
BULK 'C:\yourfile.xml', SINGLE_CLOB
) AS xmlData
)
चुनें @xmlData