[ad_1]
SQL のテーブルからフェッチしているときに、同じ名前の子ノードを持つ xml 文字列を解析したいと考えています。 以下は xml 文字列で、DebitAccountnumber ノードの値を取得したいと考えています。 以下のフェッチクエリは、個別のノード名に対してのみ機能します
My xml string is as below: <pre><HB_EAI_REQUEST> <HB_EAI_HEADER> <MsgFormat>SETTLEMENT.POSTING</MsgFormat> <MsgVersion>0000</MsgVersion> <RequestorId>HB</RequestorId> <RequestorChannelId>DDS</RequestorChannelId> <RequestorUserId>00379</RequestorUserId> <RequestorLanguage>E</RequestorLanguage> <RequestorSecurityInfo>RequestorSecurityInfo</RequestorSecurityInfo> <EaiReference>0</EaiReference> <ReturnCode>0000</ReturnCode> </HB_EAI_HEADER> <Request> <SettlementPostingRequest> <ReferenceNum>IPOS071122000989</ReferenceNum> <DebitAccount> <DebitAccountNo>028676488148</DebitAccountNo> <DebitAmount>100000</DebitAmount> <DebitNarration>Net Settlement 11.11.22</DebitNarration> </DebitAccount> <DebitAccount> <DebitAccountNo>AED1281000020002</DebitAccountNo> <DebitAmount>100000</DebitAmount> <DebitNarration>Mirror Ac 11.11.22;</DebitNarration> </DebitAccount> <CreditAccount> <CreditAccountNo>020900001046</CreditAccountNo> <CreditAmount>200000</CreditAmount> <CreditNarration>Net Settlement 11.11.22</CreditNarration> </CreditAccount> <BranchCode /> <TimeStamp>20221107161306660</TimeStamp> <SourceSystem>L</SourceSystem> </SettlementPostingRequest> </Request> </HB_EAI_REQUEST>
私が試したこと:
テストから CAST(CAST(REQ.MQXMLdata AS XML).query(‘data(/*/Request/DebitAccount/DebitAccountNo)’) AS VARCHAR(50)) AS DebitAccountNumber を選択します
解決策 1
あなたのクエリはサンプル XML では機能しません。 DebitAccount
ノードは の直接の子ではありません Request
ノード。
クエリを変更して、ノードへの正しいパスを指定します。
SQL
select CAST(CAST(REQ.MQXMLdata AS XML).query('data(/*/Request/SettlementPostingRequest/DebitAccount/DebitAccountNo)') AS VARCHAR(50)) AS DebitAccountNumber from test
[ad_2]
コメント