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



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

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

BCR*DEVSTS  
BCR*1150  
BCR*1150/28AUG  
BCR*DEVSTS-Q/28AUG  
BCR*DEV-Q/28AUG  

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

我使用以下内容查询基础交易:

select * 
from transaction_200827 
where reqresponse= 'Q' and message rlike '^BCR.*'

我浏览了多个网站,但没有找到这种情况的例子。我尝试过对提供的示例进行变体,但没有成功:

select * from transaction_200827 where reqresponse= 'Q' and message rlike '^BCR(Q/).*' 
select * from transaction_200827 where reqresponse= 'Q' and message rlike '^BCR%Q/%.*'  

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

您正在混合regexp和LIKE模式。使用任一

message LIKE 'BCR%-Q/%'

message RLIKE '^BCR.*-Q/'

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

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

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

最新更新