如何选择Postgres中数组列中是否包含数组的任何部分?

问题描述 投票:0回答:1

我在Postgres有一张表,如下所示:

ROW    Fruit
----   -----
1.     {"Candied Apples" , "Oranges"}
2.     {"Oranges"}
3.     {"Granny Smith Apples"}

我可以使用此查询获得包含“Granny Smith Apples”的第3行:

SELECT * FROM mytable WHERE Fruit @> '{"Granny Smith Apples"}';

我现在需要做的是进行数组比较,如果在列中找到任何数组,我想返回该行。

我试过了:

SELECT *  mytable WHERE Fruit @> ANY('{"Oranges","Granny Smith Apples"}');

......我没有结果。我也尝试过“有共同点的元素”,但那仍然只给我第2行而不是第1行?

SELECT *  mytable WHERE Fruit && '{"Oranges","Granny Smith Apples"}';

我也尝试在数组中搜索单个值,但这也不起作用:

SELECT *  mytable WHERE Fruit @> ANY('{"Oranges"}');

我得到0结果。如果我在一个只有1个值的数组中检查单个值,它似乎才有效 - 完全匹配。

我有什么想法我做错了吗?

arrays postgresql psycopg2
1个回答
0
投票

精氨酸。我在列中有一个空格,一旦我修复它工作正常。

由此:

ROW    Fruit
----   -----
1.     {"Candied Apples" , "Oranges"}
2.     {"Oranges"}
3.     {"Granny Smith Apples"}

对此:

ROW    Fruit
----   -----
1.     {"Candied Apples","Oranges"}
2.     {"Oranges"}
3.     {"Granny Smith Apples"}
© www.soinside.com 2019 - 2024. All rights reserved.