我正在尝试编写包含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+"%")
答案 0 :(得分:1)
我想你想要这个:
("( (first_name ILIKE ? OR last_name ILIKE ?) AND concat_ws(' ', address1, address2, city, state, country) ILIKE ? )", "%"+name+"%", "%"+last_name+"%", "%"+address+"%")
我只是在名称条件的周围加上了括号,所以从本质上说这是“两个名称必须匹配”和“地址也必须匹配”
(请注意,看到这样的地址条件是不寻常的-如果涉及到任何用户输入,则他们很少会匹配确切的地址。)