[英]Parse data from xml field in Oracle sql
我希望使用 sql 提取 Oracle 數據庫中的 xml 字段的一部分。 我看過很多帖子,我認為我走在正確的軌道上,也許只是我沒有正確識別正確的道路。 我在遵循 XML 到現場的路徑時遇到了麻煩。 我已經列出了我正在嘗試但沒有產生任何結果的內容,並且我已經使 XML 看起來盡可能可讀。 在這種情況下,我需要從 DateTimeReceived 和 DateTimeCompleted 中提取年/月/日/小時/分鍾/秒/毫秒。
SELECT
stbl.EXT_TRANSACTIONIDTXT,
stbl.EXT_RESPONSETEXT,
xt.*
FROM sample_table stbl,
xmltable('/ResponseEx/Response/TransactionDetailsEx/TransactionDetails'
PASSING XMLTYPE(stbl.EXT_RESPONSETEXT)
COLUMNS
Year PATH 'DateTimeReceived/Year',
Month PATH 'DateTimeReceived/Month'
)xt;
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><ResponseEx xmlns="urn:lnrisk:ws:testing:ruleplan@ver=1">
<Response>
<Messages>
<Message>
<Type>G</Type>
<Code>C6</Code>
<Message>No Data Found.
</Message>
</Message>
<Message>
<Type>G</Type>
<Message>ORDER NUMBER: AQF6LSL
</Message>
</Message>
</Messages>
<RequesterInformation>
<Name>BIGBOB</Name>
<AccountNumber>1111ABC</AccountNumber>
</RequesterInformation>
<TransactionDetailsEx>
<TransactionDetails>
<RuleplanId>111112</RuleplanId>
<DateTimeReceived>
<Year>2020</Year>
<Month>5</Month>
<Day>19</Day>
<Hour24>12</Hour24>
<Minute>58</Minute>
<Second>17</Second>
<MilliSeconds>317</MilliSeconds>
</DateTimeReceived>
<DateTimeCompleted>
<Year>2020</Year>
<Month>5</Month>
<Day>19</Day>
<Hour24>12</Hour24>
<Minute>58</Minute>
<Second>17</Second>
<MilliSeconds>563</MilliSeconds>
</DateTimeCompleted>
<QuoteBacks/>
</TransactionDetails>
<ProcessingStatus>Complete with Errors</ProcessingStatus>
<TransactionId>ABC895CL</TransactionId>
</TransactionDetailsEx>
<SearchBy>
<Subjects/>
<Vehicles>
<InquiryVehicle vehicleId="VEH1">
<PlateNumber>EEEE44444</PlateNumber>
<PlateState>AB</PlateState>
</InquiryVehicle></Vehicles>
</SearchBy><Products>
<ClaimsDataFill>
<InquiryClaimsDataFill>
<CarrierName>BIGBOB</CarrierName>
<CarrierPolicyNumber>9999999999</CarrierPolicyNumber>
<ClaimNumber>cc:98486965</ClaimNumber>
<ClaimState>CA</ClaimState>
<ParticipantNumber>001</ParticipantNumber>
<DateofLoss><Year>2020</Year>
<Month>5</Month>
<Day>19</Day>
</DateofLoss>
<ParticipantType>Claimant</ParticipantType>
<ParticipantRole>Owner</ParticipantRole>
<SearchBy>
<Vehicles>
<Vehicle ref="VEH1">VEH1</Vehicle>
</Vehicles>
</SearchBy>
</InquiryClaimsDataFill>
</ClaimsDataFill>
</Products>
<ProductResults>
<ClaimsDataFillResults/>
</ProductResults>
</Response>
</ResponseEx>
xmlns="urn:lnrisk:ws:testing:ruleplan@ver=1"
- 您的 xml 沒有標准的默認命名空間,要查詢此數據,您必須在 xmltable 語句中包含有關信息。
... xmltable(xmlnamespaces( default 'urn:lnrisk:ws:testing:ruleplan@ver=1'), '/ResponseEx/Response/TransactionDetailsEx/TransactionDetails'...
SELECT
xt.*
FROM xmltable(xmlnamespaces( default 'urn:lnrisk:ws:testing:ruleplan@ver=1'), '/ResponseEx/Response/TransactionDetailsEx/TransactionDetails'
PASSING XMLTYPE('<?xml version="1.0" encoding="UTF-8" standalone="yes"?><ResponseEx xmlns="urn:lnrisk:ws:testing:ruleplan@ver=1">
<Response>
<Messages>
<Message>
<Type>G</Type>
<Code>C6</Code>
<Message>No Data Found.
</Message>
</Message>
<Message>
<Type>G</Type>
<Message>ORDER NUMBER: AQF6LSL
</Message>
</Message>
</Messages>
<RequesterInformation>
<Name>BIGBOB</Name>
<AccountNumber>1111ABC</AccountNumber>
</RequesterInformation>
<TransactionDetailsEx>
<TransactionDetails>
<RuleplanId>111112</RuleplanId>
<DateTimeReceived>
<Year>2020</Year>
<Month>5</Month>
<Day>19</Day>
<Hour24>12</Hour24>
<Minute>58</Minute>
<Second>17</Second>
<MilliSeconds>317</MilliSeconds>
</DateTimeReceived>
<DateTimeCompleted>
<Year>2020</Year>
<Month>5</Month>
<Day>19</Day>
<Hour24>12</Hour24>
<Minute>58</Minute>
<Second>17</Second>
<MilliSeconds>563</MilliSeconds>
</DateTimeCompleted>
<QuoteBacks/>
</TransactionDetails>
<ProcessingStatus>Complete with Errors</ProcessingStatus>
<TransactionId>ABC895CL</TransactionId>
</TransactionDetailsEx>
<SearchBy>
<Subjects/>
<Vehicles>
<InquiryVehicle vehicleId="VEH1">
<PlateNumber>EEEE44444</PlateNumber>
<PlateState>AB</PlateState>
</InquiryVehicle></Vehicles>
</SearchBy><Products>
<ClaimsDataFill>
<InquiryClaimsDataFill>
<CarrierName>BIGBOB</CarrierName>
<CarrierPolicyNumber>9999999999</CarrierPolicyNumber>
<ClaimNumber>cc:98486965</ClaimNumber>
<ClaimState>CA</ClaimState>
<ParticipantNumber>001</ParticipantNumber>
<DateofLoss><Year>2020</Year>
<Month>5</Month>
<Day>19</Day>
</DateofLoss>
<ParticipantType>Claimant</ParticipantType>
<ParticipantRole>Owner</ParticipantRole>
<SearchBy>
<Vehicles>
<Vehicle ref="VEH1">VEH1</Vehicle>
</Vehicles>
</SearchBy>
</InquiryClaimsDataFill>
</ClaimsDataFill>
</Products>
<ProductResults>
<ClaimsDataFillResults/>
</ProductResults>
</Response>
</ResponseEx>')
COLUMNS
Year PATH 'DateTimeReceived/Year',
Month PATH 'DateTimeReceived/Month'
)xt;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.