我的SQL表中有三个XML列(单行表只用于存储XML),XML结构是这样的:
在第1栏 -
<Column1XML>
....
</Column1XML>
在第2栏 -
<Column2XML>
....
</Column2XML>
在第3栏 -
<Column3XML>
....
</Column3XML>
我正在寻找的最终结果XML是:
<SomeTagName>
<Column1XML>
....
</Column1XML>
<Column2XML>
....
</Column2XML>
<Column3XML>
....
</Column3XML>
</SomeTagName>
如何在不进行字符串连接的情况下获得此必需结构?我确信必须有一种使用Typed XML的方法。
提前感谢您查询我的问题。
答案 0 :(得分:2)
以下是两种方式。
示例数据
declare @T table
(
Col1 xml,
Col2 xml,
Col3 xml
)
insert into @T values
(
'<Column1XML></Column1XML>',
'<Column2XML></Column2XML>',
'<Column3XML></Column3XML>'
)
使用根名称作为列别名
select Col1 as 'SomeTagName',
Col2 as 'SomeTagName',
Col3 as 'SomeTagName'
from @T
for xml path('')
使用*
作为列别名并指定path()
。
select Col1 as '*',
Col2 as '*',
Col3 as '*'
from @T
for xml path('SomeTagName')
结果:
<SomeTagName>
<Column1XML />
<Column2XML />
<Column3XML />
</SomeTagName>