gpt4 book ai didi

带有 XML 命名空间的 SQL Server 2005 - 查询多个节点和属性

转载 作者:行者123 更新时间:2023-12-04 16:51:32 26 4
gpt4 key购买 nike

我有以下 XML 和代码,可以拉回 AccountNumber 和 Status。我也需要拉回来...

  • MFRRequest 的 ID 属性
  • CaseInformation 节点中的几个元素

  • 我不确定如何获取 ID 属性,我想知道……我可以在同一个查询中获取所有这些信息(来自多个节点)吗?

    谢谢!
    DECLARE @doc xml
    SET @doc =
    '<?xml version="1.0" encoding="UTF-8"?>
    <p:OrderRequest xmlns:p="http://XXX.Schemas.OrderRequest/2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://XXX.Schemas.OrderRequest/2 OrderRequestV2.xsd ">
    <p:Header>
    <p:SCRARequestCount>0</p:SCRARequestCount>
    <p:MFRRequestCount>1</p:MFRRequestCount>
    <p:FileCreatedAt>2001-12-31T12:00:00</p:FileCreatedAt>
    <p:RequestFileName>p:RequestFileName</p:RequestFileName>
    </p:Header>
    <p:RequestItems>
    <p:MFRRequest id="1" priority="">
    <p:AccountNumber>9999999</p:AccountNumber>
    <Status>Initial</Status>
    <p:CaseInformation>
    <ReferralDate>2011-01-01</ReferralDate>
    <LoanType>1A</LoanType>
    <ARM>Yes</ARM>
    <InvestorNumber>InvestorNumber</InvestorNumber>
    <PropertyAddress>PropertyAddress</PropertyAddress>
    <PrivateLabel>Yes</PrivateLabel>
    <CaseNumber>01-11111/AK/</CaseNumber>
    <SuspenseBalance>9999.00</SuspenseBalance>
    <TitleOrderedDate>2011-09-01</TitleOrderedDate>
    <TotalMonthlyPayment>876.99</TotalMonthlyPayment>
    </p:CaseInformation>
    </p:MFRRequest>
    </p:RequestItems>
    </p:OrderRequest>'
    ;WITH XMLNAMESPACES('http://XXX.Schemas.OrderRequest/2' AS p)

    SELECT
    Y.i.value('Status[1]', 'varchar(10)') AS Status ,
    Y.i.value('p:AccountNumber[1]', 'varchar(10)') AS AccountNumber
    FROM @doc.nodes('/p:OrderRequest/p:RequestItems/p:MFRRequest') AS Y(i)

    最佳答案

    尝试这样的事情:

    ;WITH XMLNAMESPACES('http://XXX.Schemas.OrderRequest/2' AS p)
    SELECT
    MFRRequestID = Y.i.value('(@id)[1]', 'int'),
    RequestStatus = Y.i.value('Status[1]', 'varchar(10)') ,
    AccountNumber = Y.i.value('p:AccountNumber[1]', 'varchar(10)'),
    ReferralDate = CIF.value('(ReferralDate)[1]', 'varchar(25)'),
    CaseInfoType = CIF.value('(Type)[1]', 'varchar(25)')
    FROM
    @doc.nodes('/p:OrderRequest/p:RequestItems/p:MFRRequest') AS Y(i)
    CROSS APPLY
    i.nodes('p:CaseInformation') AS Tbl(CIF)

    基本上,一旦您拥有 <p:MFRRequest>您的 Y(i) 中的 XML 元素伪表,然后您可以再次使用对 .nodes() 的第二次调用获得(可能是多个) <p:CaseInfomration>节点和使用 .value()调用这个新的第二个伪表从中提取单个位的信息。

    关于带有 XML 命名空间的 SQL Server 2005 - 查询多个节点和属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11674859/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com