我有一个名为orders
的表,其中有一个名为comment
的列。
我有一个order ids
列表,我想搜索所有comment
,看看哪个order
引用了它们。
到目前为止,我已经解决了 sql 的正则表达式部分
Order.where('comment ~ 'sd{5}' OR comment ~ '^d{5}'')
.where("comment LIKE '%?%'", order_id)
但我似乎无法找到一种方法来使查询更灵活地查找长度与 5 以外的order_ids
是否有可能使{5}
更加动态,像{#{order_id.to_s.length}}
这样的东西?
更新刚刚遇到这篇文章 在这种情况下,使用边界匹配会更好。
Order.where('comment ~ 'y?y'', order_id)
会做这个伎俩。
我们可以传递digit_count
digit_count = order_id.to_s.length
Order.where('comment ~ 'sd{?}' OR comment ~ '^d{?}'', digit_count, digit_count)
如果您正在寻找特定的order_id
Order.where("comment ~ 's#{order_id}s'")