问题描述
我正在尝试查询我们的数据库以查找具有唯一参数的特定交易类型。
有多种格式,我正在寻找带有-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
成功,而不必匹配整个字符串({{ 1}}锚点强制它从头开始匹配,但是没有^
锚点将它扩展到末尾。
如果该列具有索引,我建议使用$
-根据我的经验,LIKE
不利用索引。无论哪种方式,索引都只会在开始时用于匹配RLIKE
,其余的则需要扫描所有带有该前缀的值。