我對SQL服務器中的XML不是很熟悉。我需要將下面的XML擴展到一個表格,但我不知道該怎麼做。有人能幫我嗎?如何將以下XML擴展到TSQL中的表中?
<MainNode>
<Type>Type1</Type>
<Group>Group1</Group>
<IDFile>File1</IDFile>
<IDFile>File2</IDFile>
<IDFile>File3</IDFile>
<IDFile>File4</IDFile>
<XP>XP1</XP>
<SubNode>
<Data1>Data1</Data1>
<Data2>Data2</Data2>
</SubNode>
<Parameters>
<Parameter>
<Name>PName1</Name>
<Value>PVal1</Value>
</Parameter>
<Parameter>
<Name>PName2</Name>
<Value>PVal2</Value>
</Parameter>
</Parameters>
</MainNode>
我的主要問題是如何展開包含多個元素的子節點。我也有重複節點號碼未知。
我用.nodes()
和.value()
功能
我的代碼如下所示:
declare @XML xml = '<MainNode>
<Type>Type1</Type>
<Group>Group1</Group>
<IDFile>File1</IDFile>
<IDFile>File2</IDFile>
<IDFile>File3</IDFile>
<IDFile>File4</IDFile>
<XP>XP1</XP>
<SubNode>
<Data1>Data1</Data1>
<Data2>Data2</Data2>
</SubNode>
<Parameters>
<Parameter>
<Name>PName1</Name>
<Value>PVal1</Value>
</Parameter>
<Parameter>
<Name>PName2</Name>
<Value>PVal2</Value>
</Parameter>
</Parameters>
</MainNode>';
SELECT
Child.value('(Type)[1]', 'VARCHAR(100)') AS [Type],
Child.value('(Group)[1]', 'VARCHAR(10)') AS [Group]
FROM
@XML.nodes('/MainNode') AS N(Child);
我需要這樣的東西:
Type1 | Group1 | XP1 | Param1.1 Name | Param1.1 Value
Type1 | Group1 | XP1 | Param1.2 Name | Param1.2 Value
Type2 | Group2 | XP2 | Param2.1 Name | Param2.1 Value
...
當您使用您提供的示例XML數據填充時,最終所需SQL表的外觀如何? – 3N1GM4