2013-06-03 135 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