我在Postgres中有一个表格,如下所示:
ROW Fruit
---- -----
1. {"Candied Apples" , "Oranges"}
2. {"Oranges"}
3. {"Granny Smith Apples"}
使用以下查询,我可以获取包含“格兰尼·史密斯苹果”的第3行:
SELECT * FROM mytable WHERE Fruit @> '{"Granny Smith Apples"}';
我现在要做的是进行数组比较,如果在该列中找到我的任何数组,我想返回该行。
我尝试过:
SELECT * mytable WHERE Fruit @> ANY('{"Oranges","Granny Smith Apples"}');
...我没有得到任何结果。我还尝试过“具有相同的元素”,但这仍然只给我第二行而不是第一行?
SELECT * mytable WHERE Fruit && '{"Oranges","Granny Smith Apples"}';
我还尝试在数组中搜索单个值,但是这也不起作用:
SELECT * mytable WHERE Fruit @> ANY('{"Oranges"}');
我得到0条结果。仅当我针对其中仅包含1个值的数组(完全匹配)检查单个值时,它才似乎起作用。
有什么想法我在做什么错吗?
答案 0 :(得分:0)
Arg。我在列中有一个空格,一旦修复,它就可以正常工作。
从此:
ROW Fruit
---- -----
1. {"Candied Apples" , "Oranges"}
2. {"Oranges"}
3. {"Granny Smith Apples"}
对此:
ROW Fruit
---- -----
1. {"Candied Apples","Oranges"}
2. {"Oranges"}
3. {"Granny Smith Apples"}