如何从oracle中提取clob XML属性名称列表

时间:2016-02-16 11:32:33

标签: xml oracle oracle11g clob

enter image description here我需要通过从oracle 11g中的clob数据中提取xml元素名来生成报告。产品表将其属性存储为clob XML,它可以在其上存储多个属性。以下列格式存储的值:

200.0Manufacturer1235 / V

这里我需要一个报告,其中应包含Rebate,SellerOwnerID,SellerOwnerValue等属性名称。我可以提取clob数据,但我不知道如何获取属性名称列表。

2 个答案:

答案 0 :(得分:0)

执行以下查询以获得所需的输出

SELECT EXTRACTVALUE (COLUMN_VALUE, '/attr/@name') attribute,
       EXTRACTVALUE (COLUMN_VALUE, '/attr/double') double,
       EXTRACTVALUE (COLUMN_VALUE, '/attr/string') string
  FROM TABLE(XMLSEQUENCE(EXTRACT(XMLTYPE('<attrs><attr name="Rebate"><double>200.0</double></attr><attr name="SellerOwnerID"><string>Manufacturer</string></attr><attr name="SellerOwnerValue"><string>1235/V</string></attr></attrs>'),'/attrs/attr')))

答案 1 :(得分:0)

with abc as ( select * from  
(select 'Prod1' prod_name,xmltype('<attrs><attr name="Rebate"><double>200.0</double></attr><attr name="SellerOwnerID"><string>Manufacturer</string></attr><attr name="SellerOwnerValue"><string>1235/V</string></attr></attrs>') xxx from dual
union all 
select 'Prod2',xmltype('<attrs><attr name="Rebate"><double>200.0</double></attr><attr name="SellerOwnerID"><string>Manufacturer</string></attr><attr name="SellerOwnerValue"><string>1235/V</string></attr><attr name="Rebate"><double>200.0</double></attr><attr name="SellerOwnerID"><string>Manufacturer</string></attr><attr name="SellerOwnerValue"><string>1235/V</string></attr></attrs>') from dual
))
select prod_name,attr_name,attr_type,attr_value from abc,xmltable('attrs/attr'
                passing  abc.xxx
                columns
                    attr_name varchar2(30) path '@name',
                    attr_type varchar2(30) path '*/name()',
                    attr_value varchar2(30) path '*/text()'
                      );