问题描述
我正在研究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_\\_%'")