如何将以下XML扩展到TSQL中的表中?

如何将以下XML扩展到TSQL中的表中?,xml,tsql,sql-server-2012,Xml,Tsql,Sql Server 2012,我对SQL server中的XML不是很熟悉。我需要将下面的XML扩展到一个表中,但我不知道怎么做。有人能帮我吗 <MainNode> <Type>Type1</Type> <Group>Group1</Group> <IDFile>File1</IDFile> <IDFile>File2</IDFile> <IDFile>File3&l

我对SQL server中的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>
我需要像这样的东西:

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中有许多不同的数据结构。。。在一个查询中检索所有数据没有多大意义

在下面的代码中,我将向您展示如何从中获得一些东西。我希望您能获得足够的模板,以便自己管理其余的模板

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>';
--键值对:在
中有KVP:

SELECT 
    SubNode.value('local-name(.)', 'NVARCHAR(100)') AS NodeName, 
    SubNode.value('.', 'NVARCHAR(10)') AS NodeValue
FROM
    @XML.nodes('/MainNode/SubNode/*') AS N(SubNode);
--在
中有一个典型的
1:n
相关子结构:

SELECT 
    Prm.value('Name[1]', 'NVARCHAR(100)') AS ParamterName, 
    Prm.value('Value[1]', 'NVARCHAR(10)') AS ParameterValue
FROM
    @XML.nodes('/MainNode/Parameters/Parameter') AS N(Prm);

你的问题不是很清楚。。。XML中有许多不同的数据结构。。。在一个查询中检索所有数据没有多大意义

在下面的代码中,我将向您展示如何从中获得一些东西。我希望您能获得足够的模板,以便自己管理其余的模板

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>';
--键值对:在
中有KVP:

SELECT 
    SubNode.value('local-name(.)', 'NVARCHAR(100)') AS NodeName, 
    SubNode.value('.', 'NVARCHAR(10)') AS NodeValue
FROM
    @XML.nodes('/MainNode/SubNode/*') AS N(SubNode);
--在
中有一个典型的
1:n
相关子结构:

SELECT 
    Prm.value('Name[1]', 'NVARCHAR(100)') AS ParamterName, 
    Prm.value('Value[1]', 'NVARCHAR(10)') AS ParameterValue
FROM
    @XML.nodes('/MainNode/Parameters/Parameter') AS N(Prm);

当使用您提供的示例XML数据填充时,您最终想要的SQL表是什么样子的?当使用您提供的示例XML数据填充时,您最终想要的SQL表是什么样子的?正是我需要的,10x@Shnugo正是我需要的,10x@Shnugo