【问题标题】:Convert NVP SQL Table to XML将 NVP SQL 表转换为 XML
【发布时间】:2015-02-04 16:09:30
【问题描述】:

我有一个包含名称-值对的表。我想将名称值对序列化为一个 xml 结构,每个名称值对都有一个元素,[Name] 列作为 xml 元素名称,[Value] 列作为 XML 节点的内容。

例如给定以下示例数据...

;with nvp (Name, Value) as
(
    select 'Food', 'Tacos' union all
    select 'Height', '5''9"' union all
    select 'Value', '3.141'
)
select *
from nvp

我想要一个如下所示的 xml 块:

<root>
    <Food>Tacos</Food>
    <Height>5'9"</Height>
    <Value>3.141</Value>
</root>

当我尝试 FOR XML PATH 时,我得到了类似下面的东西,这不是我想要的。

<root>
  <Name>Food</Name>
  <Value>Tacos</Value>
</root>
<root>
  <Name>Height</Name>
  <Value>5'9"</Value>
</root>
<root>
  <Name>Value</Name>
  <Value>3.141</Value>
</root>

有人知道怎么做吗?

【问题讨论】:

    标签: sql-server xml sql-server-2008 tsql xpath


    【解决方案1】:

    在转换为XML 之前将行转置为列。

    还要在Xml path() 中提及根名称

    ;WITH nvp (NAME, Valued)
         AS (SELECT 'Food', 'Tacos'
             UNION ALL
             SELECT 'Height', '5''9"'
             UNION ALL
             SELECT 'Value', '3.141')
    SELECT *
    FROM   nvp
           PIVOT (Max(valued)
                 FOR NAME IN ([Food],
                              [Height],
                              [Value])) pv
    FOR xml path('root') 
    

    结果:

    <root>
      <Food>Tacos</Food>
      <Height>5'9"</Height>
      <Value>3.141</Value>
    </root>
    

    【讨论】:

      猜你喜欢
      • 2011-04-28
      • 2018-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多