我有一个存储数据的表:
declare @t table
(
el nvarchar(50),
val nvarchar(50)
)
insert into @t values ('n1', 'value 1'), ('n2', 'value 2'), ('n3', 'value 3 <>')
我应该得到 xml,如下所示:
<data>
<n1>value 1</n1>
<n2>value 2</n2>
<n3>value 3 <></n3>
</data>
到目前为止我能得到的最好的是:
select cast('<' + el + '>' + (select val from @t i where i.el = t.el for xml raw(''), elements) + '</' + el + '>' as xml)
from @t t
For XML Raw(''), root('data'), Elements, Type
你能帮忙吗?谢谢!
最佳答案
不需要加入el
,可以使用*
去掉标签名val
。
select cast('<'+el+'>'+(select val as '*' for xml path(''))+'</'+el+'>' as xml)
from @T
for xml path(''), root('data')
结果:
<data>
<n1>value 1</n1>
<n2>value 2</n2>
<n3>value 3 <></n3>
</data>
关于sql-server - 从表数据创建 XML 元素和值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25601643/