2013-03-22 53 views
1

獲取價值我有一個表列甲骨文從CDATA

DETAIL   VARCHAR2(4000) 

一說被存儲在DETAIL列中的樣本數據是

<![CDATA[<DIV STYLE="text-align:LEFT;"><SPAN STYLE="letter-spacing:0px;color:#000000;font-size:10px;font-family:'Verdana';">Value to be extract</SPAN></DIV>]]> 

有沒有一種方法來提取文本一個SQL選擇查詢?

+0

它總是那種格式? – sgeddes 2013-03-22 03:15:20

+0

樣式html將存儲在<![CDATA []]>中。根據定義的樣式 – 2013-03-22 03:26:48

回答

1
regexp_substr(detail, '>([^<]+)<', 1, 1, '', 1) 

fiddle - 感謝sgeddes

+0

謝謝:)它處理動態值的好處 – 2013-03-22 06:39:06

+0

你知道我在哪裏可以找到reg表達式的解釋嗎? – 2013-03-22 08:03:55

+1

@jjpan - [Here](http://docs.oracle.com/cd/E14072_01/server.112/e10592/functions148.htm)和[here](http://docs.oracle.com/cd/E14072_01 /server.112/e10592/ap_posix001.htm#i690819) – 2013-03-22 08:09:27

1

有道通過Oracle XML DB功能,做這樣的事情:

select 
    value_test 
from 
XMLTable('$p'  
    passing XMLParse(content '<![CDATA[<DIV STYLE="text-align:LEFT;"><SPAN STYLE="letter-spacing:0px;color:#000000;font-size:10px;font-family:''Verdana'';">Value to be extract</SPAN></DIV>]]>') 
    as "p" 
    columns value_test varchar2(4000) path '/text()' 
); 

另一個變種這樣做:

select 
    dbms_xmlgen.convert(
    XMLQuery('data($p)'  
     passing by value XMLParse(content '<![CDATA[<DIV STYLE="text-align:LEFT;"><SPAN STYLE="letter-spacing:0px;color:#000000;font-size:10px;font-family:''Verdana'';">Value to be extract</SPAN></DIV>]]>') 
     as "p"   
     returning content 
    ).getCLOBVal(), 
    1 
) 
from dual;