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



我有一个字符串数组列的表,我试图获得所有行,其中数组列包含来自另一个字符串数组的元素。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']);

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

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

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

或者你可以这样写

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

相关内容

  • 没有找到相关文章