#sql #ruby-on-rails
#sql #ruby-on-rails
Вопрос:
Мой sql в rails
@search = @search.where('txt_1 OR txt_2 OR keywords like ?', some_value)
Почему это не работает. Когда у меня есть только «txt_1 ИЛИ txt_2» — я думаю, что все работает нормально. Но когда я добавляю next ИЛИ, результата нет, если some_value не существует в последнем ИЛИ.
ОТВЕТ:
хорошо, как я вижу, OR — это условие, которое возвращает true для одной ИЛИ / И второй переменной. Я делаю это так, и это работает — я не знаю, хорошее ли это решение
@items.where(' (txt_1 OR txt_2 like ?) OR (keywords like ?) ', "%#{search_name}%","%#{search_name}%")
Ответ №1:
OR
Оператор в SQL должен использоваться для сравнения разных утверждений, например something = 'something' OR other_thing = 'other_stuff'
.
В вашем случае вы должны использовать OR
ключевое слово следующим образом:
@items.where('txt_1 LIKE ? OR txt_2 LIKE ? OR keywords LIKE ?', "%#{search_name}%","%#{search_name}%", "%#{search_name}%")
Но поскольку вы используете то же значение ( search_name
) , вы можете использовать этот довольно полезный синтаксис:
@items.where('txt_1 LIKE :search OR txt_2 LIKE :search OR keywords LIKE :search', search: "%#{search_name}%")