我在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专家
答案 0 :(得分:1)
&&
是“重叠”运算符,它是described as“具有相同的元素”
您要查找的是“包含”运算符@>
,该运算符检查右侧数组的所有元素是否包含在左侧数组中:
select *
from products
where available_sizes @> ('{39, 40}');