2013-06-03 134 views
0

如何搜索可以說,在開始和'結束字符之間,其中在我們#@的Oracle SQL導航數據挖掘文本挖掘

例如@A'123'HEY'345''@B'K

SO數據庫FORMULA_TEXT場在這個例子中,我們有123,345@B在開始和結束'字符之間,所以我想用sql找到這些。可以說在每條記錄中我有這個FORMULA_TEXT提交,我會檢查它是否包含@#之間的開始和'字符。

所以在我的例子的結果是@B

順便說一句,如果它太硬,我可以先找到@秒,然後# S的在開始之間,並最終'字符

PS:HEY不在我的例子中'字符的開始和結束之間。

+0

我編輯了自己的冠軍。請參閱:「[應該在其標題中包含」標籤「](http://meta.stackexchange.com/questions/19190/)」,其中的共識是「不,他們不應該」。 –

回答

0

您可以使用REGEXP_SUBSTR

SQL> SELECT txt, regex, regexp_substr(txt, regex, 1, 1, 'c', '3') result 
    2 FROM (SELECT q'¤@A'123'HEY'345''@B'K¤' txt, 
    3     q'¤^([^']*|('[^']*')*?)*?'([^']*[@#][^']*)'¤' regex 
    4   FROM dual); 

TXT     REGEX         RESULT 
-------------------- ---------------------------------------- --------- 
@A'123'HEY'345''@B'K ^([^']*|('[^']*')*?)*?'([^']*[@#][^']*)' @B