首页 > 解决方案 > PostgreSQL:处理数组

问题描述

我在 PostgreSQL 表中有一个列 available_sizes 类型数组:text[]

select available_sizes from products;

 {37,38,39,40}
...

有时我需要检查哪些行包含某些值,例如 39 和 40,所以我尝试这样做:

select * 
from products 
where available_sizes && ('{39, 40}');

返回包含 39 或 40 的行

select * 
from products 
where available_sizes = ANY ('{41, 42}');

返回错误:“找不到数据类型 text[] 的数组类型”

请问这个怎么解决?抱歉,不是 SQL/PostgreSQL 专家

标签: arrayspostgresql

解决方案


&&是“重叠”运算符,被描述为“具有共同元素”

您正在寻找的是“包含”运算符@>,它检查右侧数组的所有元素是否包含在左侧数组中:

select * 
from products 
where available_sizes @> ('{39, 40}');

推荐阅读