如何在ILIKE搜索查询中编写包含AND条件的OR的查询

时间:2019-07-09 07:28:49

标签: sql ruby-on-rails activerecord

我正在尝试编写包含1个以上参数的搜索查询,我想使用'AND'和'OR'运算符基于该参数进行搜索,并使用ILIKE获取数据。 我的查询是: TableName.where("( first_name ILIKE ? OR last_name ILIKE ? AND concat_ws(' ', address1, address2, city, state, country) ILIKE ? )", "%"+name+"%", "%"+last_name+"%", "%"+address+"%")

1 个答案:

答案 0 :(得分:1)

我想你想要这个:

("( (first_name ILIKE ? OR last_name ILIKE ?) AND concat_ws(' ', address1, address2, city, state, country) ILIKE ?  )", "%"+name+"%", "%"+last_name+"%", "%"+address+"%")

我只是在名称条件的周围加上了括号,所以从本质上说这是“两个名称必须匹配”和“地址也必须匹配”

(请注意,看到这样的地址条件是不寻常的-如果涉及到任何用户输入,则他们很少会匹配确切的地址。)