SQL и поиск во многих столбцах

#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}%")