sql-server - 围绕 xml 或逐行添加 xml 元素的最佳方法

标签 sql-server xml tsql sql-server-2012

在 SQL Server 2012 (SP1) 上,获取如下所示的数据的最佳方法是什么:

declare @t table (
  id int,
  data xml
)

insert into @t values (1, '<node/>'), (2, '<node/>')

id  data
1   <node />
2   <node />

把它变成

id  data
1   <root><node /></root>
2   <root><node /></root>

?

有没有比将其转换为字符数据、添加节点开始和结束标记然后将其转换回 xml 更有效的方法?我在更大的数据集上处理这个问题,所以这只是一个简单的例子。

最佳答案

另一种方法(但我最喜欢的是 har07 的回答)

declare @t table (
  id int,
  data xml
)

insert into @t values (1, '<node/>'), (2, '<node/>');

SELECT id
      ,(SELECT data AS [*] FOR XML PATH('root'),TYPE)
FROM @t;

关于sql-server - 围绕 xml 或逐行添加 xml 元素的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43150734/

相关文章:

sql-server - 使用 "WITH OVER"语句 - 如何在启动另一组记录时启动新的序列号?

sql-server - Asp.net Core 2.2 将整个DB表存储在内存中EF Core

c# - 将函数或存储过程结果转换为 LINQ 的 "live"结果

php - XML 标签中的 &lt;![CDATA[]>

java - 几次快速标签切换后,Google BottomNavigationView 项目标题消失

sql-server - SQL Server 中的 IN 和 OUT 参数是什么

sql-server - 使用新序列更新聚合表

sql - 有没有办法改变设计而不从头开始创建表格?

sql-server - ASP.Net Core 2.0 FileTable的用法

java - 按钮的可见性