将 NVP SQL Table 转换为 XML
Convert NVP SQL Table to XML
我有一个 table 包含名称-值对。我想将名称值对序列化为一个 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>
有人知道怎么做吗?
在转换为 XML
之前将行转列。
还要在 Xml path()
中提及 Root 名称
;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>
我有一个 table 包含名称-值对。我想将名称值对序列化为一个 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>
有人知道怎么做吗?
在转换为 XML
之前将行转列。
还要在 Xml path()
中提及 Root 名称
;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>