gpt4 book ai didi

sql - 如何在 SQL Server 2005 中将列值用作用于 xml 的 xml 元素名称?

转载 作者:数据小太阳 更新时间:2023-10-29 01:42:46 25 4
gpt4 key购买 nike

简化我正在做的事情,例如,假设我有以下表格:

declare @elements table (id int, name nvarchar(20))

insert into @elements (id, name) values (1, 'FirstName')
insert into @elements (id, name) values (2, 'Surname')
insert into @elements (id, name) values (3, 'Address')

declare @values table (id int, value nvarchar(20), elementId int)

insert into @values (id, value, elementId) values (1, 'XXX', 1)
insert into @values (id, value, elementId) values (2, 'YYY', 2)
insert into @values (id, value, elementId) values (3, 'ZZZ', 3)

它简单地定义了一个元素名称表,该表可以是动态的,根据它定义了一个值表。

我想要生成以下形式的 XML,其中 @elements 表的值成为元素名称,@values 表的值成为值。

<Customer>
<FirstName>XXX</FirstName>
<Surname>YYY</Surname>
<Address>ZZZ<Address>
</Customer>

然而,到目前为止,我对 for xml 的努力并不顺利:

select e.name, v.value from @elements e
inner join @values v on v.elementId = e.id
for xml path(''), root('customer')

返回

<customer>
<name>FirstName</name>
<value>XXX</value>
<name>Surname</name>
<value>YYY</value>
<name>Address</name>
<value>ZZZ</value>
</customer>

对于 xml auto 返回

<customer>
<e name="FirstName">
<v value="XXX" />
</e>
<e name="Surname">
<v value="YYY" />
</e>
<e name="Address">
<v value="ZZZ" />
</e>
</customer>

对于 xml raw 返回

<customer>
<row name="FirstName" value="XXX" />
<row name="Surname" value="YYY" />
<row name="Address" value="ZZZ" />
</customer>

有没有一种方法可以从列中获取值以作为元素名称输出?我确定我在这里遗漏了一些明显简单的东西。

最佳答案

这很俗气,但很管用...

select 
cast('<' + name + '>' + value + '</' + name + '>' as xml)
from @values v
join @elements e on v.id = e.id
for xml path(''), root('Customer')

--- 结果 ---

<Customer>
<FirstName>XXX</FirstName>
<Surname>YYY</Surname>
<Address>ZZZ</Address>
</Customer>

关于sql - 如何在 SQL Server 2005 中将列值用作用于 xml 的 xml 元素名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3240297/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com