我正试图查询我们的数据库,以查找具有唯一参数的特定类型的事务。
有多种格式,我希望使用-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
,其余的则需要扫描带有该前缀的所有值。