SQL和搜索很多列

时间:2014-06-19 19:33:12

标签: sql ruby-on-rails

我在rails中的sql

@search = @search.where('txt_1 OR txt_2 OR keywords like ?', some_value)

为什么这不起作用。当我只有“txt_1或txt_2”时 - 我认为它可行。但是当我添加下一个OR时,在最后一个OR中不存在some_value时没有结果。

解答:

好吧,我看到,OR是条件,对于一个OR / AND第二个变量返回true。我这样做,它的确有效 - 我不知道这是一个很好的解决方案

 @items.where(' (txt_1 OR txt_2  like ?) OR (keywords like ?) ', "%#{search_name}%","%#{search_name}%") 

1 个答案:

答案 0 :(得分:0)

SQL中的OR语句必须用于比较不同的断言,例如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}%")