2016-04-06 1 views
0

テーブル(card_type)からデータを選択するクエリを作成するのが難しいです。私はxml属性(EXT_PROPERTIES_XML)を解析する必要があるのは、Nameタグの中に "PARTNER_CD"があるところだけです。以下は、xml属性のサンプルです。Oracle Sqlを使用して特定の値の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 

本当にありがとうございます。ありがとう。

答えて

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     
関連する問題