首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >条件在多行字符串中搜索的Oracle

条件在多行字符串中搜索的Oracle
EN

Stack Overflow用户
提问于 2018-03-08 15:23:46
回答 2查看 1.8K关注 0票数 2

我试图选择与其“文本”字段匹配的记录,形式如下:

代码语言:javascript
复制
__<sql>__ xyz __</sql>__

其中__的意思是任何东西,而xyz代表了我正在寻找的自己的单词。

注意:字段“Text”是一个多行字符串。

以下是查询,但它不返回任何记录:

代码语言:javascript
复制
Select * from reports where regexp_like (text, '(.*)<sql>(.*)(^|\s)xyz(\s|$)(.*)</sql>(.*)', 'i');
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-03-08 16:00:19

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

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

票数 4
EN

Stack Overflow用户

发布于 2018-03-08 16:14:06

对于这种设置,普通的旧LIKE工作得很好。你甚至不需要关心新的行字符。

代码语言:javascript
复制
 where column1 LIKE '%<sql>%xyz%</sql>%'

会做好这份工作。

对于大小写不敏感的搜索,添加LOWER

代码语言:javascript
复制
 where LOWER(column1) LIKE '%<sql>%xyz%</sql>%'

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

代码语言:javascript
复制
 where replace(replace(lower(column1),CHR(10),' '),CHR(9),' ') LIKE '%<sql>% xyz %</sql>%';

这里我正在替换新行和选项卡,如果需要的话,可以随意添加其他选项卡,例如CHR(13)。

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

简单演示:

代码语言:javascript
复制
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
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49176646

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档