2014-09-01 49 views
0

我在LOB(Large OBject)列中有一些XML內容(少於2000字節)。我使用dbms_lob_substr(messagebody)來獲取實際的XML內容,但我需要獲取特定節點的確切值。從LOB內容獲取消息的一部分

例如。

<first name>xyz</first name> 
<last name>abcd</last name> 

我需要說的價值<first name>。我怎樣才能做到這一點?

+0

其所有的XML節點.. XYZ我..How可以得到特定節點的值表示 Anandan 2014-09-01 06:45:56

+0

見我以前的【答案】(HTTP: //stackoverflow.com/a/25400877/3686755) – zaratustra 2014-09-01 08:02:37

+0

偉大的方式來做到這一點..但標記對方是正確的,他首先回應。謝謝大家 – Anandan 2014-09-01 10:14:45

回答

1

你的XML似乎缺少一個根節點?如果您的XML數據是你展示它,你可以得到的XMLTable()函數,如果你把它放在一個虛擬的根節點,例如像這樣分析它:

select x.firstname 
    from mytable, 
    xmltable(
    '/rootnode' 
    passing xmltype('<rootnode>'||myclobcol||'</rootnode>') 
    columns 
     firstname varchar2(100) path 'firstname' 
) x 

如果你需要得到多個值同時,你只需要添加到列條款:

select x.* 
    from mytable, 
    xmltable(
    '/rootnode' 
    passing xmltype('<rootnode>'||myclobcol||'</rootnode>') 
    columns 
     firstname varchar2(100) path 'firstname', 
     lastname varchar2(100) path 'lastname', 
     middleini varchar2(10) path 'middleinitial' 
) x 
+0

工程就像一個魅力..感謝很多。 – Anandan 2014-09-01 10:13:52