regexp_like镜像包含近

时间:2018-10-23 15:54:00

标签: sql oracle oracle-text regexp-like

我正在尝试使用“包含附近”的查询和使用regexp_like的查询来加快速度。最初的“包含附近”查询大约需要45分钟才能运行。 Clob列包含较大的“文档”,并已进行域索引。

初始查询:

SELECT column1
FROM TEST
WHERE CONTAINS(column1,'{NEAR(quick,fox, lazy), 3, FALSE}')>0;

建议的查询:

SELECT column1
FROM TEST
WHERE REGEXP_LIKE(column1, '(\b(quick|fox|lazy)(?:\W+\w+){1,6}?\W(quick|fox|lazy)(?:\W+\w+){1,}?\W(quick|fox|lazy)\b)','i')

我从这里得到了原始的regexp语法: https://www.regular-expressions.info/near.html

问题: 我得到了可在html https://www.regextester.com中运行的正则表达式代码,但是当我将其放在Oracle中时,它什么也找不到。我的语法有什么问题?我不知道。 Oracle对REGEXP的处理方式是否不同?

1 个答案:

答案 0 :(得分:0)

Alex,您说得很对。我看不出如何选择正确的答案。

我的问题显然是我在使用Oracle无法识别的regexp参数。因此,尽管它可以在https://www.regextester.com上运行,但是在Oracle中却无法正常工作,因为我所使用的大部分内容都无法在Oracle的正则表达式中使用。我真的认为Oracle应该扩展其认可的正则表达式代码。这真令人沮丧。