如何用一串值搜索其列包含所述值的记录

问题描述 投票:0回答:1

好的,我将尝试尽可能简单地解释这一点。

说我有3张特定表的记录。我们将这个表称为Objs,Objs具有字符串类型的属性,称为颜色(请注意它是如何复数的)。这是数据库中的3条假设记录及其相应的颜色值:

obj1 colors: "red, green, blue"

obj2 colors: "blue, orange, yellow, green"

obj3 colors: "teal, purple"

[好,现在说我希望能够找到一些有共同点的记录的子集(使用WHERE方法的一种好情况吧?)但是,我必须能够使用以下任一方法来搜索这些记录一个或什至multiple个值。例如:

说我的查询是"red, green".

然后,记录的结果集合将需要为obj1obj2,因为它们的颜色值包括关键字“ red”和“ green”。

说我的查询是"blue, purple".

所得的集合应包括obj1obj2obj3

而且,查询的格式和Obj的属性将是用“,”分隔的值,因为属性和查询本身是由数组生成的。即,对象的属性和查询本身将始终采用以下格式:

"value1, value2, value3, value4"

永远不会是这样:

"value1 value2 value3 value4"

或任何其他可能的格式。

感谢所有帮助。

sql ruby-on-rails postgresql
1个回答
0
投票
def search_function(search_string)
  names_array = search_string.split(', ')
  query = 'name LIKE ?'
  number_of_ors = names_array.count
  number_of_ors.times do 
    query += ' OR name LIKE ?'
  end
  Objects.where(query, *names_array)
end
© www.soinside.com 2019 - 2024. All rights reserved.