mysql - 尝试使用 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/%.*'
我对构建查询相当陌生,希望能提供任何生成此类查询的指导或指导。
解决方案
您正在混合正则表达式和 LIKE 模式。使用任一
message LIKE 'BCR%-Q/%'
或者
message RLIKE '^BCR.*-Q/'
您的模式中也缺少-
之前的内容Q
。
无需添加.*
到正则表达式的末尾 -RLIKE
当正则表达式匹配字符串中的任何位置时成功,它不必匹配整个字符串(^
锚强制它从头开始匹配,但没有$
锚扩展到最后)。
如果列有索引,我建议使用LIKE
-- 以我的经验,RLIKE
不利用索引。无论哪种方式,索引将仅用于匹配BCR
开头的 ,其余的需要扫描具有该前缀的所有值。
推荐阅读
- python - 连接到 SQL Server 并从 Python 以“直通”方式运行查询
- google-drive-api - 如何在 Google Colab 中提取一个非常大的文件
- python - 如何从此函数 Multi 返回一个整数值
- sql - SQL确定给定行上是否有多个列具有相同的值
- r - Rsolnp 包中的 `solnp()` 如何处理默认的 LB 和 UB 参数?
- jestjs - 开玩笑不认识 CircleCI 中的 Yarn 工作区模块
- typo3 - 在后端编辑视图中获取内容元素的页面名称/ID
- javascript - 如何使用节点js中的键对两个数组进行分组
- azure - Flutter app:如何实现正确的注销功能?
- javascript - 一般更新模式d3,删除旧数据