2017-07-06 8 views
0

commentという名前のテーブルを持つordersという名前のテーブルがあります。PostgreSQL RegexのRuby変数

私はorder idsのリストを持っており、commentを検索して、どれがorderを参照しているか調べたいと思います。

は、これまでのところ私は、SQL

Order.where('comment ~ \'\s\d{5}\' OR comment ~ \'^\d{5}\'') 
    .where("comment LIKE '%?%'", order_id) 

の正規表現の部分を働いてきた。しかし、私は5以外の異なる長さを持つorder_idsを見つけるために、より柔軟なクエリを作成する方法を考え出すように見えることはできません

{#{order_id.to_s.length}}のように、{5}をよりダイナミックにすることはできますか?

UPDATE はただ、この場合のためのより良い仕事との境界の一致を使用して、このpost に走りました。

Order.where('comment ~ \'\y?\y\'', order_id) トリックはしますか?

答えて

0

あなたが働いていた特定のORDER_ID

Order.where("comment ~ \'\s#{order_id}\s\'") 
+0

を探しているなら、私たちは、感謝をDIGIT_COUNT

digit_count = order_id.to_s.length Order.where('comment ~ \'\s\d{?}\' OR comment ~ \'^\d{?}\'', digit_count, digit_count) 

を渡すことができます – lusketeer