2015-12-07 76 views
-1

我有一個oracle的CLOB和我想提取其中的一部分: 的CLOB:提取物的Oracle XML節點

<JobDetails> 
<ObjectDetails /> 
<DestinationDetails> 
    <AddressTo>[email protected]</AddressTo> 
    <AddressCc></AddressCc> 
    <AddressBcc></AddressBcc> 
    <Subject>Automated email </Subject> 
    <Message>Automated email </Message> 
    <Attachment></Attachment> 
    <Importance>False</Importance> 
</DestinationDetails> 
</JobDetails> 

我想從達/ DestinationDetails> 不包括每次都在同獲得節點。 我不想只刪除字符串的開頭和結尾。

回答

0

鑄造它的XMLType和使用XPath/XQuery的

年紀大了,不推薦使用的語法:

SELECT EXTRACT(XMLTYPE(clob_col), '/*/DestinationDetails') 
FROM some_table 

較新的XQuery語法:

SELECT 
    XMLQUERY('/*/DestinationDetails' PASSING XMLTYPE(clob_col) RETURNING CONTENT) xml_fragment 
FROM some_table 
+0

謝謝。讓我試試看。 – Nianios

+0

舊的語法有效,不是新的。它失敗,錯誤ORA 00902無效的數據類型。我相信是這一行:AS XMLTYPE。 – Nianios

+0

你是對的,我沒有測試過它 - 當你檢索XMLTYPE時,你不需要XMLCAST。如果您的目標是葉節點/文本內容,那麼您會希望將其轉換爲數字或VARCHAR2 –