Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL和多栏搜索_Sql_Ruby On Rails - Fatal编程技术网

SQL和多栏搜索

SQL和多栏搜索,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

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