繁体   English   中英

如何使用Oracle Sql解析XML输入字段以获得特定值?

[英]How to parse XML input field for specifc value using Oracle Sql?

我在编写从表(card_type)中选择数据的查询时遇到困难。 我只需要在Name标签中包含“ 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

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

您可以使用XMLQuery或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                

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM