3

I am trying to select the records thier 'Text' field match the following form:

__<sql>__ xyz __</sql>__

where __ means anything, and xyz represents the own word that I'm searching for.

Notice: the field 'Text' is a multiline string.

Here is the query, but it doesn't return any records:

Select * from reports where regexp_like (text, '(.*)<sql>(.*)(^|\s)xyz(\s|$)(.*)</sql>(.*)', 'i');
4

2 回答 2

4

您用作'i'REGEXP_LIKE 的第三个参数,以使搜索不区分大小写。

将其更改为'in'. 另外n是 REGEXP 函数的另一个选项:它告诉正则表达式引擎允许.匹配chr(10)(换行符)。没有此选项的默认行为是.匹配换行符。

于 2018-03-08T16:00:19.007 回答
2

对于这个设置,普通的旧LIKE工作正常。你甚至不需要关心新的行字符。

 where column1 LIKE '%<sql>%xyz%</sql>%'

将完成这项工作。

对于不区分大小写的搜索添加LOWER

 where LOWER(column1) LIKE '%<sql>%xyz%</sql>%'

对于上下文分隔符搜索,例如整个单词搜索简单地将所有相关的空白字符替换为空白

 where replace(replace(lower(column1),CHR(10),' '),CHR(9),' ') LIKE '%<sql>% xyz %</sql>%';

在这里,我将替换new linetab,如果需要,请随意添加其他内容,例如 CHR(13)。

一般规则是 - 如果您可以使用LIKE更喜欢它,REGEXP因为它的性能LIKE要好得多。

简单演示:

create   table MYTABLE(column1 varchar2(1000))
;

insert into MYTABLE(column1) values('bla bla <sql> bla'||chr(10)||' xyz bla </sql> bla');
insert into MYTABLE(column1) values('bla bla <sql> bla'||chr(10)||' NO MACTH bla </sql> bla');
commit;

select * from MYTABLE;

COLUMN1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                
-------------------
bla bla <sql> bla                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
 xyz bla </sql> bla                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      

bla bla <sql> bla                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
 NO MACTH bla </sql> bla

 select * from MYTABLE 
 where column1 LIKE '%<sql>%xyz%</sql>%';

 COLUMN1                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                
-------------------
bla bla <sql> bla                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
 xyz bla </sql> bla
于 2018-03-08T16:14:06.070 回答