2016-06-24 16 views
0

这是我用来从存储在表x列中的XML中获取数据的查询。如何从具有XML数据的表中获取特定数据

SELECT EXTRACTVALUE (IT.ADO_DATA, '/valueXML/IndividualADO/ado-name') "REFERENCE" 
    FROM ITEM_ADO IT 

,这里是XML数据

<valueXML xmlns="com.ado" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <IndividualADO> 
    <ado-name>LIMS</ado-name> 
    <field> 
     <ado-field-name>ADO_LIMS_LIMS_Custodian_First_Name</ado-field-name> 
     <ado-field-value xsi:nil="true"/> 
    </field> 
    </IndividualADO> 
</valueXML> 

我试图获取节点的数据 “ADO-名”

+0

会发生什么事,当您运行查询?你有错误,或只是没有你期望的结果?什么数据类型是ASO_DATA列? –

+0

当我执行上面的查询和ADO_DATA的数据类型是XML TYPE – girish

回答

0

假设ADO_DATA是XMLType的类型,你的当前查询因为您的valueXML节点具有您需要包含在XPath中的名称空间,或者使用通配符,所以不会返回任何值:

SELECT EXTRACTVALUE (IT.ADO_DATA, '/*:valueXML/*:IndividualADO/*:ado-name') "REFERENCE" 
    FROM ITEM_ADO IT; 

REFERENCE                  
-------------------------------------------------------------------------------- 
LIMS                    

extractvalue()被去除;你可以做同样的an XQuery

select xmlquery(
    '/*:valueXML/*:IndividualADO/*:ado-name/text()' 
    passing ado_data 
    returning content) as reference 
from item_ado; 

REFERENCE                  
-------------------------------------------------------------------------------- 
LIMS 

还是用默认的命名空间而不是通配符(和显示CTE用于测试):

with item_ado (ado_data) as (
    select xmltype('<valueXML xmlns="com.ado" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <IndividualADO> 
    <ado-name>LIMS</ado-name> 
    <field> 
     <ado-field-name>ADO_LIMS_LIMS_Custodian_First_Name</ado-field-name> 
     <ado-field-value xsi:nil="true"/> 
    </field> 
    </IndividualADO> 
</valueXML>') from dual 
) 
select xmlquery(
    'declare default element namespace "com.ado"; (: :) 
    /valueXML/IndividualADO/ado-name/text()' 
    passing ado_data 
    returning content) as reference 
from item_ado; 

REFERENCE                  
-------------------------------------------------------------------------------- 
LIMS 
+0

我dint得到任何结果上面的查询dint得到我所期待的。我必须点击该行才能知道数据。表中有很多数据。 – girish

+0

每个XML都有一个ado-name的很多行;或每个XML文档中的许多ado名称节点? –

相关问题