鉴于这个XML:
<Documents>
<Batch BatchID = "1" BatchName = "Fred Flintstone">
<DocCollection>
<Document DocumentID = "269" KeyData = "" />
<Document DocumentID = "6" KeyData = "" />
<Document DocumentID = "299" KeyData = "" ImageFile="Test.TIF" />
</DocCollection>
</Batch>
<Batch BatchID = "2" BatchName = "Barney Rubble">
<DocCollection>
<Document DocumentID = "269" KeyData = "" />
<Document DocumentID = "6" KeyData = "" />
</DocCollection>
</Batch>
</Documents>
我需要将其以以下格式插入SQL Server表中:
BatchID BatchName DocumentID
1 Fred Flintstone 269
1 Fred Flintstone 6
1 Fred Flintstone 299
2 Barney Rubble 269
2 Barney Rubble 6
这是SQL语句:
SELECT
XTbl.XCol.value('./@BatchID','int') AS BatchID,
XTbl.XCol.value('./@BatchName','varchar(100)') AS BatchName,
XTbl.XCol.value('DocCollection[1]/DocumentID[1]','int') AS DocumentID
FROM @Data.nodes('/Documents/Batch') AS XTbl(XCol)
这个命令会给我返回这个结果:
BatchID BatchName DocumentID
1 Fred Flintstone NULL
2 Barney Rubble NULL
我做错了什么?
此外,有没有人能推荐一份关于SQL Server中XML的好教程?
谢谢。
卡尔
.nodes()
中要加上*
呢? - Shnugo<DocCollcetion>
将你的测试<Document>
包含起来了吗? - Shnugo