sql-server - 从表数据创建 XML 元素和值

标签 sql-server xml sql-server-2008-r2

我有一个存储数据的表:

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 &lt;&gt;</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 &lt;&gt;</n3>
</data>

关于sql-server - 从表数据创建 XML 元素和值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25601643/

相关文章:

sql-server-2008-r2 - 有没有办法在 SSMS 的新查询窗口中不将 Intellisense 默认为 "on"?

SQL Server - 创建数据库表的副本并将其放置在同一个数据库中?

sql - 更新YouTube iframe属性

javascript - 如何在 Javascript 和 PHP 中使用 XMLHttpRequest 将 HTML 内容发送到 MSSQL 数据库字段?

c# - 如何使用 C# 从 XML 中删除所有 namespace ?

android - 在 AndroidManifest.xml 中注册一个本地广播接收器?

xml - 将 XML 属性转换为元素 XSLT

sql-server - 我可以安排一个作业在每个时区的午夜运行,以及如何让进程知道要处理哪个时区?

更改列格式的 SQL 函数

sql-server - 用于 linux (centos) 的 SQL Server 批量复制 (bcp)