SQL语句提取XML

时间:2015-05-28 21:30:13

标签: sql-server xml

我试图将XML列提取到不同的列中。我需要弄清楚如何在SQL语句中执行此操作。

以下是来自" ItemSpecifics"的一条记录。柱: " ItemsSpecifics"已存储在sql数据库Table" ItemEbayID"作为xml字段 而且我试图拆分这个专栏。

<SelectedValues haveDefaultsBeenSet="true">
  <SelectedValue>
    <Name>Consignment Status</Name>
    <Value>False</Value>
  </SelectedValue>
  <SelectedValue>
    <Name>Salesperson</Name>
    <Value>'Vasya'</Value>
  </SelectedValue>
  <SelectedValue>
    <Name>Model</Name>
    <Value />
  </SelectedValue>
  <SelectedValue>
    <Name>Salesperson Paid</Name>
    <Value>False</Value>
  </SelectedValue>
  <SelectedValue>
    <Name>Resolved</Name>
    <Value>False</Value>
  </SelectedValue>
  <SelectedValue>
    <Name>Quality Issue</Name>
    <Value>'None'</Value>
  </SelectedValue>     
</SelectedValues>

我查看了许多示例,但没有一个可以应用于此xml字段。

1 个答案:

答案 0 :(得分:2)

declare @xml xml = '<SelectedValues>
      <SelectedValue>
        <Name>Consignment Status</Name>
        <Value>False</Value>
      </SelectedValue>
      <SelectedValue>
        <Name>Salesperson</Name>
        <Value>''Vasya''</Value>
      </SelectedValue>
      <SelectedValue>
        <Name>Model</Name>
        <Value />
      </SelectedValue>
      <SelectedValue>
        <Name>Salesperson Paid</Name>
        <Value>False</Value>
      </SelectedValue>
      <SelectedValue>
        <Name>Resolved</Name>
        <Value>False</Value>
      </SelectedValue>
      <SelectedValue>
        <Name>Quality Issue</Name>
        <Value>''None''</Value>
      </SelectedValue>     
    </SelectedValues>'

    select t.c.value('Name[1]', 'nvarchar(500)'),  
           t.c.value('Value[1]', 'nvarchar(500)')
        from @xml.nodes('//SelectedValue') t(c)