我有一个表,其中有一个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']);
但是,我似乎没有得到它的权利,也不能找到任何信息的主题。
1条答案
按热度按时间c9qzyr3d1#
答案写在评论中,但为了清楚起见,我会在这里写出来:
或者你可以这样写