SQL和多栏搜索
我在rails中的sqlSQL和多栏搜索,sql,ruby-on-rails,Sql,Ruby On Rails,我在rails中的sql @search = @search.where('txt_1 OR txt_2 OR keywords like ?', some_value) 为什么这不起作用。当我只有“txt_1或txt_2”时,我认为它工作正常。但当我添加next OR时,如果在last OR中不存在某个_值,则不会有结果 答复: 正如我看到的,或者是一个或第二个变量返回true的条件。我是这样做的,它是有效的-我不知道这是一个好的解决方案 @items.where(' (txt_1 OR
@search = @search.where('txt_1 OR txt_2 OR keywords like ?', some_value)
为什么这不起作用。当我只有“txt_1或txt_2”时,我认为它工作正常。但当我添加next OR时,如果在last OR中不存在某个_值,则不会有结果
答复:
正如我看到的,或者是一个或第二个变量返回true的条件。我是这样做的,它是有效的-我不知道这是一个好的解决方案
@items.where(' (txt_1 OR txt_2 like ?) OR (keywords like ?) ', "%#{search_name}%","%#{search_name}%")
SQL中的
或
语句必须用于比较不同的断言,如something='something'或other\u thing='other\u stuff'
在您的情况下,您应该使用或
关键字,如下所示:
@items.where('txt_1 LIKE ? OR txt_2 LIKE ? OR keywords LIKE ?', "%#{search_name}%","%#{search_name}%", "%#{search_name}%")
但由于使用相同的值(search\u name
),因此可以使用以下非常有用的语法:
@items.where('txt_1 LIKE :search OR txt_2 LIKE :search OR keywords LIKE :search', search: "%#{search_name}%")