在PostgreSQL中使用ANY运算符时为何出现语法错误?
错误原因
PostgreSQL 中 ANY 运算符的语法要求操作数必须是数组类型,你当前的写法是将多个字符串直接用逗号分隔放在括号内,这不符合语法规范,数据库无法解析这种格式,因此触发逗号位置的语法错误。
解决方法
修正 ANY 的参数格式,用数组构造器 ARRAY[] 包裹目标字符串列表即可,完整修正后的查询语句如下:
select distinct rest from restraunts where friends ilike any (ARRAY['Micheal','Martin','Jack']) and rest ilike any (ARRAY['Ofelia','Casablanca']);
另外,如果你只是需要简单的多值模糊匹配,也可以用多个 ILIKE 结合 OR 的写法(效果和上述语句一致):
select distinct rest from restraunts where (friends ilike 'Micheal' or friends ilike 'Martin' or friends ilike 'Jack') and (rest ilike 'Ofelia' or rest ilike 'Casablanca');
不过第一种用 ANY + ARRAY 的写法更简洁,尤其是当匹配值较多时。
内容的提问来源于stack exchange,提问作者Ecem
相关产品推荐
相关产品推荐

