暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 用信封和HTML查卡器从clob字段中检索字段

askTom 2017-10-18
363

问题描述

亲爱的

我试图解析位于Oracle表中包含信封和一些HTML字符 (& quot,& lt,& gt) 的clob字段,如下所示:

<?xml版本 = "1.0" 编码 = "utf-8"?>http://schemas.xmlsoap.org/soap/envelope/"xmlns:xsd ="http://www.w3.org/2001/XMLSchema"xmlns:xsi ="http://www.w3.org/2001/XMLSchema-instance"> <输入返回xmlns ="http://invoker.ps.eos.fairisaac.com" ><?xml version="1.0" encoding="UTF-8"?><Application APPLICATIONCROSSREFERENCEID="111222" DeliveryOptionCode="Test"><MessageList StatusCode="0" StatusDescription="Successful"/><CreditApprovalProcess AmountFinanced="1000"TransactionCnt="1"><ApList/><RevenueSources><RevenueSource RevenueSourceType="Cana"/> </RevenueSources><EquipmentList> <Equipment EquipLoanTerm="60" EquipModel="AAAAA" EquipNewOrUsed="N" EquipSellingPrice="1000" EquipType="Test"/> </EquipmentList><ApplicantList> <Applicant StartDtBusiness="1900-01-01"><InstallmentList/> </Applicant> <Applicant StartDtTest="1900-01-01"><InstallmentList/> </Applicant> </ApplicantList> </CreditApprovalProcess><CreditRequest ProductCategory="cat_Generic" ProductCode="prod_XXX"/><DecisionResponse> <Product DecisionFlowName="df_test_Ag" LastStepName="rs_Test" OriginType="Request" ProductCategory="cat_Generic" ProductCode="prod_XXX" ProductStatusIndicator="Complete" StrategyName=""> <Decision DecisionIndex="0" DecisionResult="Investigate" DecisionStatusIndicator="Final" ImplementationName="rs_Test" ImplementationType="Ruleset"> <Reason RankOrderNumber="2"> <ReasonText>Test</ReasonText> </Reason> <Reason RankOrderNumber="3"> <ReasonText>Test</ReasonText> </Reason> </Decision> </Product> </DecisionResponse><ProcessingHistory ProcessingTimestamp="2017-04-25T08:53:37.202-03:00" SystemId="Test"> <DecisionFlowHistory DecisionFlowName="df_Test_Ag" ProductCategory="cat_Generic" ProductCode="prod_XXX" StartTimestamp="2017-04-25T08:53:37.204-03:00" StopTimestamp="2017-04-25T08:53:37.205-03:00" SystemDecisionResult="Investigate"> <DecisionFlowStepHistory ImplementationName="dms_InitialDefaults" ImplementationType="Data Method Sequence" StartTimestamp="2017-04-25T08:53:37.204-03:00" StepName="dms_InitialDefaults" StopTimestamp="2017-04-25T08:53:37.204-03:00"> <DataMethodSequenceHistory DataMethodSequenceName="dms_InitialDefaults"/> </DecisionFlowStepHistory> <DecisionFlowStepHistory ImplementationName="rs_Test" ImplementationType="Ruleset" StartTimestamp="2017-04-25T08:53:37.204-03:00" StepName="rs_Test" StopTimestamp="2017-04-25T08:53:37.205-03:00"> <RulesetHistory RulesFiredTotalSeverity="2" RulesetName="rs_Test" RulesetResult="RuleFails"> <RuleHistory ReasonText="Test" RuleName="rule_SerasaBureauCheck"/><RuleHistory ReasonText="Test" RuleName="rule_BacenBureauCheck"/> <DecisionHistory DecisionResult="Investigate"/> </RulesetHistory> </DecisionFlowStepHistory> </DecisionFlowHistory> </ProcessingHistory><DataMethodHistory Timestamp="2017-04-25T08:53:37.205-03:00"> <Name>dm_FinancialDataCheck</Name> <DataType>boolean</DataType> <Value>false</Value> </DataMethodHistory> </Application>

基本上,我想提取存储在每个属性值中的所有数据,例如:
APPLICATIONCROSSREFERENCEID="111222"

它应该导致:
APPLICATIONCROSSREFERENCEID 111222

您能否在Select Oracle中为我提供一些示例?

问候,
拉斐尔

专家解答

下面将提取输入并返回一个xmltype

SQL>
SQL> set define off
SQL>
SQL> select xmltype(p.field1)
  2  from (
  3  select xmltype(
  4  ''
  5  ||''
  6  ||''
  7  ||''
  8  ||'<?xml version="1.0" encoding="UTF-8"?><Application APPLICATIONCROSSREFERENCEID="111222" DeliveryOptionCode="Test"><MessageList StatusCode="0'
  9  ||'" StatusDescription="Successful"/><CreditApprovalProcess AmountFinanced="1000" TransactionCnt="1"><ApList/><RevenueSources><RevenueSource RevenueSourceType="Cana"'
 10  ||'/> </RevenueSources><EquipmentList> <Equipment EquipLoanTerm="60" EquipModel="AAAAA" EquipNewOrUsed="N" EquipSellingPrice="1000" EquipType="Test"/> </'
 11  ||'EquipmentList><ApplicantList> <Applicant StartDtBusiness="1900-01-01"><InstallmentList/> </Applicant> <Applicant StartDtTest="1900-01-01"><InstallmentList/> </Applicant> </'
 12  ||'ApplicantList> </CreditApprovalProcess><CreditRequest ProductCategory="cat_Generic" ProductCode="prod_XXX"/><DecisionResponse> <Product DecisionFlowName="df_test_Ag" LastStepName='
 13  ||'"rs_Test" OriginType="Request" ProductCategory="cat_Generic" ProductCode="prod_XXX" ProductStatusIndicator="Complete" StrategyName=""> <Decision DecisionIndex='
 14  ||'"0" DecisionResult="Investigate" DecisionStatusIndicator="Final" ImplementationName="rs_Test" ImplementationType="Ruleset"> <Reason RankOrderNumber="2"> <'
 15  ||'ReasonText>Test</ReasonText> </Reason> <Reason RankOrderNumber="3"> <ReasonText>Test</ReasonText> </Reason> </Decision> </Product> </DecisionResponse><'
 16  ||'ProcessingHistory ProcessingTimestamp="2017-04-25T08:53:37.202-03:00" SystemId="Test"> <DecisionFlowHistory DecisionFlowName="df_Test_Ag" ProductCategory="cat_Generic" ProductCode="'
 17  ||'prod_XXX" StartTimestamp="2017-04-25T08:53:37.204-03:00" '
 18  ||'StopTimestamp="2017-04-25T08:53:37.205-03:00" SystemDecisionResult="Investigate"> <DecisionFlowStepHistory ImplementationName="dms_InitialDefaults" ImplementationType='
 19  ||'"Data Method Sequence" StartTimestamp="2017-04-25T08:53:37.204-03:00" StepName="dms_InitialDefaults" StopTimestamp="2017-04-25T08:53:37.204-03:00"> <DataMethodSequenceHistory DataMethodSequenceName'
 20  ||'="dms_InitialDefaults"/> </DecisionFlowStepHistory> <DecisionFlowStepHistory ImplementationName="rs_Test" ImplementationType="Ruleset" StartTimestamp="2017-04-25T08:53:37.204-03:00" StepName'
 21  ||'="rs_Test" StopTimestamp="2017-04-25T08:53:37.205-03:00"> <RulesetHistory RulesFiredTotalSeverity="2" RulesetName="rs_Test" RulesetResult="RuleFails"> <RuleHistory ReasonText='
 22  ||'"Test" RuleName="rule_SerasaBureauCheck"/><RuleHistory ReasonText="Test" RuleName="rule_BacenBureauCheck"/> <DecisionHistory DecisionResult="Investigate"/> </'
 23  ||'RulesetHistory> </DecisionFlowStepHistory> </DecisionFlowHistory> </ProcessingHistory><DataMethodHistory Timestamp="2017-04-25T08:53:37.205-03:00"> <Name>dm_FinancialDataCheck</Name> <'
 24  ||'DataType>boolean</DataType> <Value>false</Value> </DataMethodHistory> </Application>'
 25  ||''
 26  ||''
 27  ||'') as xml
 28  from dual ) t,
 29      xmltable(
 30        xmlnamespaces('http://schemas.xmlsoap.org/soap/envelope' as "soapenv",
 31        DEFAULT 'http://invoker.ps.eos.fairisaac.com'
 32        ),
 33      '/soapenv:Envelope/soapenv:Body' passing t.xml
 34                      columns
 35                          field1 varchar2(4000) path 'inputXmlReturn') p;

XMLTYPE(P.FIELD1)
----------------------------------------------------------------------------------------------------------------------------------


  
  
    
    
      
    
    
      
    
    
      
        
      
      
        
      
    
  
  
  
    
      
        
          Test
        
        
          Test
        
      
    
  
  
    
      
        
      
      
        
          
          
          
        
      
    
  
  
    dm_FinancialDataCheck
    boolean
    false
  



1 row selected.

SQL>
SQL>
SQL>
SQL>


现在您有了xmltype,您可以使用XMLTABLE来提取列,就像它是普通的XML一样。

在这个网站上搜索XMLTABLE,寻找大量的例子
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论