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

如何筛选lang_codes完全包含于输入数组的PostgreSQL表行?

PostgreSQL数组筛选:匹配所有元素存在于输入数组的行

现有PostgreSQL表结构及数据如下:

id intlang_codes text[]
1{eng,fre}
2{eng}

需求

需要筛选出lang_codes数组中所有元素都存在于指定输入数组的行:

  • 若输入数组为['eng','fre','ger'],返回所有行;
  • 若输入数组为['eng','ger'],仅返回id=2的行(id=1的lang_codes包含fre,不在输入数组内)。

尝试过的错误方法

  • 使用&&操作符(判断数组是否有交集):只要有一个元素匹配就返回,不符合“所有元素都存在”的要求,执行以下SQL会返回所有行:
    select * from my_table where lang_codes && ARRAY['eng','ger'];
    
  • 使用@>操作符(判断右边数组是否包含左边):仅当输入数组与lang_codes完全一致时才返回,也不满足需求。

正确解法

使用<@操作符,它的作用是判断左边数组的所有元素都包含在右边数组中,完全匹配需求。

对应SQL示例:

-- 输入数组包含所有语言代码,返回全部行
select * from my_table where lang_codes <@ ARRAY['eng','fre','ger'];

-- 输入数组仅包含eng和ger,仅返回id=2的行
select * from my_table where lang_codes <@ ARRAY['eng','ger'];

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 13:09:57