如何从具有特定名称组合的数据库中获取数据

问题描述

我正在研究Rails项目上的ruby,我需要使用特定的组合(例如c*_c*_othername)从数据库获取数据*可以编号为1,2,3,例如c1_c1_anystring。前缀c一直固定。 我正在尝试使用以下代码,但无法正常工作

Topic.where("name like ?","%c*_c*_*%")

解决方法

您可能需要SIMILAR TO

请尝试以下操作:

Topic.where('name SIMILAR TO ?',"%c\\d\\_c\\d\\_%")

如果接受的位数不止一个,请使用以下格式

Topic.where('name SIMILAR TO ?',"%c\\d+\\_c\\d+\\_%")

如果您不喜欢转义下划线,也可以使用~进行模式匹配,如文档所述:

Topic.where('name ~ ?',".*c\\d+_c\\d+_.*")
正则表达式中的

\d匹配从0到9的数字

c * _c * _othername另一个名称不是强制性的。有时候这个名字只有c5_c6,所以我也想得到这种类型的名字

请尝试以下模式

 Topic.where('name ~ ?',".*c\\d+_c\\d+(_.*)?$")
,

您可以尝试

Topic.where("name like 'c_\\_c_\\_%'")