Я настоятельно рекомендую заглянуть в ORM, например Sequel, что позволяет легко генерировать правильный запрос независимым DBM образом.
Это позволяет нам удобно использовать массивы и хэши. Вот an example с использованием массива для создания «где» условие в SQL:
my_posts = posts.where(:category => ['ruby', 'postgres', 'linux'])
# WHERE category IN ('ruby', 'postgres', 'linux')
Этот конкретный пример является частью раздела «Фильтрация записей».
В комментарии, ОП сказал:
col2 является текст с каждой строки, имеющей пункт, а не только одно слово.
Затем вы хотите использовать предложение LIKE
или regex, которое позволяет проверять каждое слово. См. Раздел «String search functions» в разделе «Фильтрация данных» для того, как Sequel позволяет выполнять поиск внутри строк.
Код будет что-то вроде:
data1.select(:col1).where(Sequel.like(:col2, terms.map{ |t| "%#{ t }%" }))
, который будет генерировать что-то вроде:
SELECT col1 FROM data1 WHERE ((col2 LIKE '%genetics%') OR (col2 LIKE '%elderly%') OR (col2 LIKE '%health%'))
необходима дополнительная информация. Приведите несколько примеров. –
Так, например, у меня есть термины = [ 'генетика', 'пожилой', 'здоровье'] , и я хочу использовать con.query "SELECT col1 FROM data1 WHERE MATCH (col2) ПРОТИВ (терминов)" является это возможно? – howluocanyougo
что у вас есть, я не вижу. –