相关疑难解决方法(0)

如何从xml节点查询值?

我有一个包含XML列的表:

CREATE TABLE Batches( 
   BatchID int,
   RawXml xml 
)
Run Code Online (Sandbox Code Playgroud)

xml包含以下项目:

<GrobReportXmlFileXmlFile>
   <GrobReport>
       <ReportHeader>
          <OrganizationReportReferenceIdentifier>1</OrganizationReportReferenceIdentifier>
          <OrganizationNumber>4</OrganizationNumber>
       </ReportHeader>
  </GrobReport>
   <GrobReport>
       <ReportHeader>
          <OrganizationReportReferenceIdentifier>2</OrganizationReportReferenceIdentifier>
          <OrganizationNumber>4</OrganizationNumber>
       </ReportHeader>
  </GrobReport>
   <GrobReport>
       <ReportHeader>
          <OrganizationReportReferenceIdentifier>3</OrganizationReportReferenceIdentifier>
          <OrganizationNumber>4</OrganizationNumber>
       </ReportHeader>
  </GrobReport>
   <GrobReport>
       <ReportHeader>
          <OrganizationReportReferenceIdentifier>4</OrganizationReportReferenceIdentifier>
          <OrganizationNumber>4</OrganizationNumber>
       </ReportHeader>
  </GrobReport>
Run Code Online (Sandbox Code Playgroud)

我想要的是生成一个集合,其中包含:

OrganizationReportReferenceNumber  OrganizationNumber
=================================  ==================
1                                  4
2                                  4
3                                  4
4                                  4
Run Code Online (Sandbox Code Playgroud)

我试过了:

SELECT 
    foo.value('/ReportHeader/OrganizationReportReferenceIdentifier') AS ReportIdentifierNumber,
    foo.value('/ReportHeader/OrganizationNumber') AS OrginazationNumber
FROM CDRBatches.RawXML.query('/GrobReportXmlFileXmlFile/GrobReport/ReportHeader') foo
Run Code Online (Sandbox Code Playgroud)

但这不起作用.我试过了:

SELECT 
    foo.value('/ReportHeader/OrganizationReportReferenceIdentifier') AS ReportIdentifierNumber,
    foo.value('/ReportHeader/OrganizationNumber') AS OrginazationNumber
FROM RawXML.nodes('/GrobReportXmlFileXmlFile/GrobReport/ReportHeader') bar(foo)
Run Code Online (Sandbox Code Playgroud)

但这不起作用.所述的XPath表达式

/GrobReportXmlFileXmlFile/GrobReport/ReportHeader
Run Code Online (Sandbox Code Playgroud)

是正确的; 在任何其他xml系统中它返回:

<ReportHeader>
    <OrganizationReportReferenceIdentifier>1</OrganizationReportReferenceIdentifier>
    <OrganizationNumber>4</OrganizationNumber>
</ReportHeader> …
Run Code Online (Sandbox Code Playgroud)

sql-server xpath sql-server-2005 sqlxml

17
推荐指数
2
解决办法
11万
查看次数

标签 统计

sql-server ×1

sql-server-2005 ×1

sqlxml ×1

xpath ×1