Postgresql Regex 中的 Ruby 变量



我有一个名为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'")

最新更新