我在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个值的数组中检查单个值,它似乎才有效 - 完全匹配。
我有什么想法我做错了吗?
精氨酸。我在列中有一个空格,一旦我修复它工作正常。
由此:
ROW Fruit
---- -----
1. {"Candied Apples" , "Oranges"}
2. {"Oranges"}
3. {"Granny Smith Apples"}
对此:
ROW Fruit
---- -----
1. {"Candied Apples","Oranges"}
2. {"Oranges"}
3. {"Granny Smith Apples"}