首页 > 解决方案 > 尝试使用 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/%.*'  

我对构建查询相当陌生,希望能提供任何生成此类查询的指导或指导。

标签: mysqlstringspecial-characters

解决方案


您正在混合正则表达式和 LIKE 模式。使用任一

message LIKE 'BCR%-Q/%'

或者

message RLIKE '^BCR.*-Q/'

您的模式中也缺少-之前的内容Q

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

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


推荐阅读