【问题标题】:SQL Statement Extract XMLSQL 语句提取 XML
【发布时间】:2015-05-29 08:10:57
【问题描述】:

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

以下是“ItemSpecifics”列中的一条记录: “ItemsSpecifics”已作为 xml 字段存储在 sql 数据库表“ItemEbayID”中 我正在尝试拆分此列。

<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 字段。

【问题讨论】:

  • 你想如何表示数据?
  • 查询所有这些列的输出:寄售状态、销售人员、型号、销售人员已付款、已解决、质量问题。

标签: sql-server xml


【解决方案1】:
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)  

【讨论】:

  • 请告诉我如何提取至少两列:例如这两列“寄售状态”、“销售人员”,一是字符串,一是布尔值。
  • 我试过了,效果很好。它确实拆分了列,但是我如何声明一列而不是只声明一个字段。
  • 要创建多个列,您必须然后 PIVOT 结果。为此,是否提前知道列很重要……如果没有,您将需要构建动态 sql 来进行透视。这是此类内容的链接:stackoverflow.com/questions/29403519/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-22
  • 1970-01-01
相关资源
最近更新 更多