我有一个表,其中的列tags
的类型为varchar []
。
我想选择标记包含一组值中至少一个的所有行。
类似这样的东西:
-- Not real code
SELECT *
FROM foo
WHERE non_empty(set_intersection(tags, '{ "apples", "bananas", "cherries" }'))
此语法是什么?
我知道我可以进行一系列的OR
,但这似乎不太优雅。
您可以使用&&
,数组重叠运算符:
select *
from foo
where tags && ARRAY['apples', 'bananas', 'cherries']