2016-11-30 22 views
-2

我試圖提取Oracle中插入符號標誌之間的值的字段的提取BETWEEN CARET正負號值在Oracle

AAA_0^%CELEBRTE%^S~AAA_2^TOP^S~simpLE^True^S~AAA1^NICE^S~ 

輸出

^%CELEBRTE% TOP True NICE 

任何幫助將是讚賞

+4

嘛,你嘗試過什麼? – OldProgrammer

+0

regexp_substr將是一個起點。 –

回答

0

此作品:

SQL> SELECT regexp_replace('AAA_0^%CELEBRTE%^S~AAA_2^TOP^S~simpLE^True^S~AAA1^NICE^S~' 
    2      , '^[^^]*\^([^^]*)\^[^^]*\^([^^]*)\^[^^]*\^([^^]*)\^[^^]*\^([^^]*)\^.*' 
    3      , '\1 \2 \3 \4') rr 
    4 FROM dual; 

RR 
------------------------ 
%CELEBRTE% TOP True NICE 

很顯然,假設您只有4項要從數據中提取。

我不是正則表達式大師,作爲我自己的練習,我用我認爲是蠻力的方法解決了這個問題。我可以看到一組重複的模式來提取每個字符串,但是在我對此的研究中,似乎沒有辦法做到自動創建新捕獲組的「重複反向引用」。如果其他人知道如何做到這一點,我會歡迎提供意見。

正則表達式的一對夫婦方便的資源:

A regular expression tester

A basic tutorial