我正在尝试查询我们的数据库,以查找具有唯一参数的特定类型的事务。
有多种格式,我希望使用-Q/参数获取事务。
BCR*DEVSTS
BCR*1150
BCR*1150/28AUG
BCR*DEVSTS-Q/28AUG
BCR*DEV-Q/28AUG 我能够找到BCR事务,但由于内存限制,我只能获得前10k行,而且它们没有-Q/参数。我正在尝试创建一个仅选择所需事务的查询。
我使用以下代码查询basis事务:
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/%.*' 我是构建查询的新手,如果有任何关于生成这种类型的查询的指导或指导,我将不胜感激。
发布于 2020-09-01 08:27:53
您正在混合regexp和LIKE模式。使用以下任一选项
message LIKE 'BCR%-Q/%'或
message RLIKE '^BCR.*-Q/'在您的模式中,您还缺少Q之前的-。
不需要将.*添加到正则表达式的末尾--当正则表达式匹配字符串中的任何位置时,RLIKE就会成功,它不必匹配整个字符串( ^锚点强制它从开头开始匹配,但没有$锚点将其扩展到末尾)。
如果列有索引,我建议使用LIKE --根据我的经验,RLIKE不利用索引。无论哪种方式,索引将仅用于匹配开头的BCR,其余的则需要扫描具有该前缀的所有值。
https://stackoverflow.com/questions/63679603
复制相似问题