2016-06-24 15 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名稱節點? –

相關問題