postgresql 如何获取一个字符串数组中包含另一个字符串数组中任何元素的所有元素?

mmvthczy  于 2023-04-29  发布在  PostgreSQL
关注(0)|答案(1)|浏览(157)

我有一个表,其中有一个STRING ARRAY列,我试图获取所有行,其中Array列包含来自另一个STRING ARRAY的元素。F.E:

CREATE TABLE a (b STRING[]);
INSERT INTO a VALUES 
(ARRAY['car', 'train', 'boat']), 
(ARRAY['elephant', 'hippo', 'tiger']),
(ARRAY['bear', 'dog', 'cat']);

现在我想得到所有包含数组中至少一个元素的行。到目前为止我找到的最好的选择是

SELECT * FROM a WHERE b @> ARRAY['dog'] OR b @> ARRAY['tiger'];

这不是很方便,因为我的数组是动态的,我需要以一种笨拙的方式构建查询。我在想我是不是漏掉了什么。可能是这样的:

SELECT * FROM a WHERE b @> ANY(ARRAY['dog', 'tiger']);

但是,我似乎没有得到它的权利,也不能找到任何信息的主题。

c9qzyr3d

c9qzyr3d1#

答案写在评论中,但为了清楚起见,我会在这里写出来:

SELECT * FROM a WHERE b && ARRAY['dog', 'tiger'];

或者你可以这样写

SELECT * FROM a WHERE b && '{"dog", "tiger"}';

相关问题