You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查询STRING ARRAY列包含另一STRING ARRAY任意元素的所有行?

数组列匹配任意元素的最简实现方案

你需要的是判断两个数组是否存在重叠元素(即至少有一个共同元素),PostgreSQL 原生提供了专门的数组重叠运算符&&,可以直接满足需求,无需拼接多个OR条件。

正确查询写法

SELECT * FROM a WHERE b && ARRAY['dog', 'tiger'];

执行结果说明

针对你提供的测试数据,上述语句会返回以下2行符合要求的结果:

b
-------------------------
 {elephant,hippo,tiger}
 {bear,dog,cat}

原写法问题说明

你尝试的b @> ANY(ARRAY['dog', 'tiger'])执行报错是因为类型不匹配:

  • @> 运算符要求左右两侧均为数组类型,语义是「左侧数组完整包含右侧数组」
  • 后面ANY返回的元素是字符串类型('dog'、'tiger'),和运算符要求的数组类型不匹配
    如果一定要用ANY写法,需要把右侧参数转为二维数组,写法如下,远不如&&简洁:
SELECT * FROM a WHERE b @> ANY(ARRAY[ARRAY['dog'], ARRAY['tiger']]);

内容的提问来源于stack exchange,提问作者Nikolay Maslarski

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 23:18:03