我試圖找出如何拉嵌套的XML元素,並把它變成在SQL表中的結果。一個WorkItem總是有一個組,但Group字段可以嵌套N次。有沒有一種簡單的方法,只是拉出來的字段,看起來像這樣的XML領域:提取元素在SQL
declare @xml XML = '
<WorkItem>
<Group Name="Base" >
<Field FieldId="361" Name="Assigned To" />
<Field FieldId="362" Name="Stuff" />
<Group Name="Detail">
<Field FieldId="363" Name="Assigned To 2" />
</Group>
</Group>
</WorkItem>'
declare @handle int
declare @status int
exec @status = sp_xml_preparedocument @handle output, @xml
select *
from openxml(@handle, 'WorkItem/Group/Field')
with (
FieldId int,
Name varchar(max)
)
exec sp_xml_removedocument @handle
什麼我越來越:
361,Assigned To
362,Stuff
我很期待:
361,Assigned To
362,Stuff
363,Assigned To 2
謝謝!
我複製並粘貼您的樣品rextester(+1對於準備使用的樣本數據),[但我不能重現該問題](http://rextester.com/DRNX91743) –
順便說一下:'FROM OPENXML'與相應的SP準備和去除文檔是過時的,並且不應被使用的任何更多(稀土例外情況)。而是使用適當的[XML數據類型提供的方法](https://msdn.microsoft.com/en-us/library/ms190798.aspx)。 – Shnugo