我在表中有一个XML列,表中的每一行都是一个完整的XML节点。我试图简单地尝试选择这些行的子集,并使用根节点生成XML文档。我以为我可以执行以下操作,但它会在每个节点周围添加一个额外的包装器,其中包含XML列的名称。有没有什么不同我不能得到这个包装?
示例数据结构:
CREATE TABLE ActivityTable
(
XMLDATA AS XML
)
INSERT INTO [ActivityTable] VALUES ( '<Activity>This is activity one</Activity>' )
INSERT INTO [ActivityTable] VALUES ( '<Activity>This is activity two</Activity>' )
INSERT INTO [ActivityTable] VALUES ( '<Activity>This is activity three</Activity>' )
查询获取数据
SELECT
XMLdata FROM ActivityTable
FOR XML PATH(''), ROOT('RootNode')
我得到了什么:
<root>
<XMLdata>
<Activity>This is activity one</Activity>
</XMLdata>
<XMLdata>
<Activity>This is activity two</Activity>
</XMLdata>
<XMLdata>
<Activity>This is activity three</Activity>
</XMLdata>
</root>
我想要的是什么:
<root>
<Activity>This is activity one</Activity>
<Activity>This is activity two</Activity>
<Activity>This is activity three</Activity>
</root>
答案 0 :(得分:3)
SELECT XMLdata AS '*'
FROM ActivityTable
FOR XML PATH(''), ROOT('RootNode')
Columns with a Name Specified as a Wildcard Character
如果指定的列名是通配符(*),则为内容 插入该列,就像没有指定列名一样。
答案 1 :(得分:1)
使用.query('/Node')
是一种查询某个节点的方法,并且您没有获得XMLData标记。希望它有所帮助!
SELECT XMLDATA.query('/Activity') FROM ActivityTable
FOR XML PATH(''), ROOT('root')