PostgreSQL:处理数组

时间:2018-09-21 10:29:24

标签: arrays 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}');

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

请问您将如何解决?抱歉,不是SQL / PostgreSQL专家

1 个答案:

答案 0 :(得分:1)

&&是“重叠”运算符,它是described as“具有相同的元素”

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

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