SQL从表中选择XML列作为xml节点(而不是嵌套在另一个xml节点下)?

时间:2016-05-18 15:41:18

标签: sql-server xml stored-procedures xpath

DECLARE @outputXML xml 
CREATE TABLE #Temp (a varchar(128), xmlelement xml)
INSERT INTO #Temp values('1', N'<list id="1"/><list id="2"/>')
INSERT INTO #Temp values('3', N'<list id="3"/><list id="4"/>')

set @outputXML=(SELECT a as '@id', xmlelement as 'SecondMasterList' from #Temp
FOR XML PATH('MasterList'))

select @outputXML

DROP TABLE #Temp 

上面的脚本@outputXML抛出以下XML

<MasterList id="1">
<SecondMasterList><list id="1" /><list id="2" /></SecondMasterList>
</MasterList>
<MasterList id="3">
<SecondMasterList><list id="3" /><list id="4" /></SecondMasterList>
</MasterList>

必需: 但我需要@ outputXML的<list>直接嵌套在<MasterList>下。即。不将其嵌套在<SecondMasterList>

预期产出:

<MasterList id="1">
<list id="1" /><list id="2" />
</MasterList>
<MasterList id="3">
<list id="3" /><list id="4" />
</MasterList>

让我知道如何修改查询以获得预期的输出。 非常感谢任何帮助!

1 个答案:

答案 0 :(得分:2)

指定属性的路径

set @outputXML=(SELECT a as 'MasterList/@id', xmlelement as 'MasterList' from #Temp
FOR XML PATH(''))