1

我的 SQL 表中有三个 XML 列(单行表仅用于存储 XML),XML 结构如下所示:

在第 1 列 -

<Column1XML>
    ....
</Column1XML>

在第 2 列 -

<Column2XML>
    ....
</Column2XML>

在第 3 列 -

<Column3XML>
    ....
</Column3XML>

我正在寻找的最终生成的 XML 是:

<SomeTagName>
    <Column1XML>
        ....
    </Column1XML>
    <Column2XML>
        ....
    </Column2XML>
    <Column3XML>
        ....
    </Column3XML>
</SomeTagName>

如何在不进行字符串连接的情况下获得这个所需的结构?我确信必须有使用 Typed XML 的出路。

提前感谢您查找我的问题。

4

1 回答 1

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>
于 2012-07-17T07:00:12.450 回答