我有一个表Table
,其中一列ID
。它包含简单的字母,比如Table ='A','B','C'。
我需要创建一个看起来像这样的
的xml文件<Table>
<ID>A</ID>
<ID>B</ID>
<ID>C</ID>
</Table>
所以我试过
select * from Table for XML AUTO, ELEMENTS
但这会产生
<Table>
<ID>A</ID>
</Table>
<Table>
<ID>B</ID>
</Table>
<Table>
<ID>B</ID>
</Table>
据我所知,内部节点集合表示一个表的单个记录(在这种情况下,由单个字段/节点组成),周围的标记表示记录本身。但这不是我希望看到的。
我的(非常脏)解决方案将xml转换为字符串,删除
</Table><Table>
配对然后重建XML
declare @x nvarchar(max)
set @x = (select id from Table for xml auto, elements)
set @x = replace(@x, '</Table><Table>', '')
select cast(@x as xml)
我的问题很简单:有没有正确的方法来实现我的目标,还是我必须忍受这个丑陋的“解决方案”?
答案 0 :(得分:3)
如果您想要特定的输出格式并使用PATH,我想您想避免使用AUTO。没有测试但是如何:
SELECT *
FROM Table
FOR XML PATH('ID'), ROOT('Table')
答案 1 :(得分:1)
上述解决方案如下:
select ID
from Table
for XML Path(''), Root('Table')