我在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}%")
答案 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}%")