【发布时间】:2018-08-28 18:27:23
【问题描述】:
我想使用 SQL 查询解析 XML。下面是查询和 XML。请在下面找到当前结果和预期结果的屏幕截图。它只从嵌套节点中获取一个值。请推荐
DECLARE @xml XML =
'<FileGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<FileGroup>
<FileName>Test1</FileName>
<Files>
<File>
<FilePath>\\Server\Test1</FilePath>
<FileGUID>3006989A-725E-40E8-BAF7-A094CB710AC3</FileGUID>
<DependentOnFileNames></DependentOnFileNames>
</File>
<File>
<FilePath>\\Server\Test2</FilePath>
<FileGUID>A584CE87-CC76-484E-ACE4-53C6CAD27B7F</FileGUID>
<DependentOnFileNames></DependentOnFileNames>
</File>
<File>
<FilePath>\\Server\Test3</FilePath>
<FileGUID>727A6BBE-E820-4431-9958-93D0863F65B8</FileGUID>
<Comments></Comments>
<DependentOnFileNames>
<FileGUID>3006989A-725E-40E8-BAF7-A094CB710AC3</FileGUID>
<FileGUID>A584CE87-CC76-484E-ACE4-53C6CAD27B7F</FileGUID>
</DependentOnFileNames>
</File>
</Files>
</FileGroup>
<FileGroup>
<FileName>Test2</FileName>
<Files>
<File>
<FilePath>\\Server\Test4</FilePath>
<FileGUID>EA422762-58CD-423D-92D4-1DC18A312F48</FileGUID>
<DependentOnFileNames></DependentOnFileNames>
</File>
</Files>
</FileGroup>
</FileGroups>'
SELECT
FileGroup.value('FileName[1]', 'VARCHAR(1000)') FileName,
tbl1.Files.value('FilePath[1]', 'VARCHAR(1000)') FilePath,
tbl2.DependentOnFileNames.value('FileGUID[1]', 'UNIQUEIDENTIFIER') DependentFileGUID
FROM @xml.nodes('/FileGroups/FileGroup') tbl(FileGroup)
CROSS APPLY tbl.FileGroup.nodes('Files/File') tbl1(Files)
CROSS APPLY tbl1.Files.nodes('DependentOnFileNames') tbl2(DependentOnFileNames)
【问题讨论】:
标签: sql-server xml