2017-07-06 3 views
0

Ich habe eine Tabelle mit dem Namen orders mit einer Spalte namens comment drin.Ruby-Variable in Postgresql Regex

Ich habe eine Liste von order ids, und ich möchte alle comment durchsuchen, um zu sehen, welche order hat sie referenziert.

Bisher habe ich die Regex Teil der SQL arbeitet

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

Aber ich kann nicht einen Weg zu erarbeiten, um die Abfrage flexibler scheinen order_ids zu finden, die andere Länge als 5 andere haben

Ist es möglich, {5} dynamischer zu machen, etwa zu {#{order_id.to_s.length}}?

UPDATE lief gerade in diesen post eine Grenze Spiel Verwendung für diesen Fall noch besser funktionieren würde.

Order.where('comment ~ \'\y?\y\'', order_id) Würde den Trick tun.

Antwort

0

Wir passieren digit_count

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

wenn Sie nach bestimmten order_id suchen sind

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

, die gearbeitet, dank – lusketeer