0

我如何搜索让我们说FORMULA_TEXT数据库中的字段在' 我们拥有的开始字符和结束字符之间的位置,#或者@

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

所以在这个例子中,我们有123345并且@B'字符的开始和结束之间,所以我想用 sql 找到这些。假设在每条记录中我都有这个FORMULA_TEXT文件,我将检查它是否包含@#介于字符的开头和'字符之间。

所以在我的例子中结果是@B

顺便说一句,如果它太难了,我可以先找到@s 然后#s 在开始和结束'字符之间

ps:HEY在我的示例中,不在 ' 字符的开头和结尾之间。

4

1 回答 1

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
于 2013-06-03T14:26:20.373 回答