首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试使用mysql在数据库中查找嵌入的字符串

尝试使用mysql在数据库中查找嵌入的字符串
EN

Stack Overflow用户
提问于 2020-09-01 07:56:13
回答 1查看 32关注 0票数 0

我正在尝试查询我们的数据库,以查找具有唯一参数的特定类型的事务。

有多种格式,我希望使用-Q/参数获取事务。

代码语言:javascript
复制
BCR*DEVSTS  
BCR*1150  
BCR*1150/28AUG  
BCR*DEVSTS-Q/28AUG  
BCR*DEV-Q/28AUG  

我能够找到BCR事务,但由于内存限制,我只能获得前10k行,而且它们没有-Q/参数。我正在尝试创建一个仅选择所需事务的查询。

我使用以下代码查询basis事务:

代码语言:javascript
复制
select * 
from transaction_200827 
where reqresponse= 'Q' and message rlike '^BCR.*'

我已经审查了多个网站,但还没有找到这种情况的一个例子。我已经尝试了所提供的示例的变体,但没有成功:

代码语言:javascript
复制
select * from transaction_200827 where reqresponse= 'Q' and message rlike '^BCR(Q/).*' 
select * from transaction_200827 where reqresponse= 'Q' and message rlike '^BCR%Q/%.*'  

我是构建查询的新手,如果有任何关于生成这种类型的查询的指导或指导,我将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2020-09-01 08:27:53

您正在混合regexp和LIKE模式。使用以下任一选项

代码语言:javascript
复制
message LIKE 'BCR%-Q/%'

代码语言:javascript
复制
message RLIKE '^BCR.*-Q/'

在您的模式中,您还缺少Q之前的-

不需要将.*添加到正则表达式的末尾--当正则表达式匹配字符串中的任何位置时,RLIKE就会成功,它不必匹配整个字符串( ^锚点强制它从开头开始匹配,但没有$锚点将其扩展到末尾)。

如果列有索引,我建议使用LIKE --根据我的经验,RLIKE不利用索引。无论哪种方式,索引将仅用于匹配开头的BCR,其余的则需要扫描具有该前缀的所有值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63679603

复制
相关文章

相似问题

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