У меня есть таблица в 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"}');
... и я не получаю результатов. Я также попробовал «имеет общие элементы», но это все еще только возвращает мне строку 2, а не строку 1?
SELECT * mytable WHERE Fruit && '{"Oranges","Granny Smith Apples"}';
Я также пытался найти единственное значение в массиве, и это тоже не работает:
SELECT * mytable WHERE Fruit @> ANY('{"Oranges"}');
Я получаю 0 результатов. Кажется, это работает, только если я проверяю одно значение для массива, содержащего только 1 значение - точное совпадение.
Есть идеи, что я делаю не так?