我试图让我的头轮SQL,XML节点和交叉应用程序,我会认为下面的代码将返回3行数据,而是我只得到一个。我曾经想过使用Cross应用将查询连接回本身会为我解决这个问题。SQL Server -XML节点不返回多个记录
有人能告诉我我做错了什么吗?
在此先感谢
丹
DECLARE @XML AS XML;
SELECT @XML = ('<Deal deal_id="821">
<Application_owner>me</Application_owner>
<Deal_files>
<File>file1.doc</File>
<File>file2.pdf</File>
<File>file3.xcl</File>
</Deal_files>
</Deal>
')
select
t.n.value('@deal_id', 'int') as [ID],
f.n.value('(File)[1]','varchar(50)') as [FILENAME]
from
@XML.nodes('Deal') t(n)
cross apply
t.n.nodes('Deal_files') f(n)
'tnnodes( 'Deal_files')'只匹配一个元素,所以你只会得到一个SQL行(wh ich将包含3个XML元素/行)。 – RBarryYoung