对于这个设置,普通的旧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 line和tab,如果需要,请随意添加其他内容,例如 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