【问题标题】:How to parse XML input field for specifc value using Oracle Sql?如何使用 Oracle Sql 解析特定值的 XML 输入字段?
【发布时间】:2016-07-27 05:56:39
【问题描述】:

我在编写从表 (card_type) 中选择数据的查询时遇到困难。我只需要解析名称标签中包含“PARTNER_CD”的 xml 属性(EXT_PROPERTIES_XML)。下面是 xml 属性的示例。

    <Properties>
         <Property>
               <Name>PARTNER_CD</Name>
               <Value>LOBT</Value>
         </Property>
         <Property>
               <Name>REJECT_AT_PUMP</Name>
               <Value>true</Value>
         </Property>
         <Property>
              <Name>MAX_LITRE</Name>
              <Value>75</Value></Property>
    </Properties>

    <Properties>
         <Property>
               <Name>PARTNER_CD</Name>
               <Value>PET1</Value>
         </Property>
         <Property>
               <Name>REJECT_AT_PUMP</Name>
               <Value>true</Value>
         </Property>
         <Property>
              <Name>MAX_LITRE</Name>
              <Value>75</Value></Property>
    </Properties>

期望的输出:

NAME                VALUE
-------------------------
PARTNER_CD          LOBT
PARTNER_CD          PET1

这是我试过的..

 Select xmltype.createxml(EXT_PROPERTIES_XML).extract('/Properties/Property/Name/text()').getStringVal() as  Name, 
xmltype.createxml(EXT_PROPERTIES_XML).extract('/Properties/Property/Value/text()').getStringVal() as Value
    from card_type

我得到的输出是:

           Name                         Value
PARTNER_CDREJECT_AT_PUMPMAX_LITRE       LOBTtrue75

非常感谢任何帮助。谢谢。

【问题讨论】:

    标签: sql xml oracle11g


    【解决方案1】:

    您可以使用an XMLQuery or XMLTable提取数据:

    select x.*
    from card_type c
    cross join xmltable('/Properties/Property'
      passing xmltype(ext_properties_xml)
      columns name varchar2(20) path 'Name',
        value varchar2(20) path 'Value'
    ) x
    where name = 'PARTNER_CD';
    
    NAME                 VALUE              
    -------------------- --------------------
    PARTNER_CD           LOBT                
    PARTNER_CD           PET1                
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-13
      • 1970-01-01
      • 2014-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-14
      • 2021-11-14
      相关资源
      最近更新 更多