у меня есть таблица, содержащая студентов детали, а столбец в нем будет содержащий любимые цвета студентов в массиве JSonПодготовка где положение на столбцах типа JSON в PostgreSQL
-----------------------------------------------------
id name colors
-----------------------------------------------------
1 John {'red','blue'}
2 Cena {'red'}
3 Templeman {'orange'}
4 Kristy {'pink','red'}
------------------------------------------------------
теперь я хочу, чтобы перечислить все студенты, имеющие один из этих любимых цветов
select all students whose colors IN (red,pink)
поэтому список я ожидаю
1 John {'red','blue'}
2 Cena {'red'}
4 Kristy {'pink','red'}
есть способ сделать это? Я попытался найти индивидуальный цвет с (color=red OR color = pink)
, но это делает запрос длинным и вызывает задержку, когда список сопоставлений огромен, я думаю, что IN
, как цвет IN (красный, розовый), будет лучше, чем это, можно ли искать в столбце json array?
Используйте оператор '&&'. Как в этом [вопрос] (http://stackoverflow.com/questions/1647385/postgres-comparing-two-arrays): 'SELECT * FROM students where colors && '{" red "}';' –
, который не работал , но другой, просто добавил мой собственный ответ – CodeRows
О, я вижу. Ваши «цвета» описываются как текстовое поле. Я тестировал запрос именно в массиве: 'CREATE TABLE students (идентификационный серийный первичный ключ, имя varchar, цвет varchar []); INSERT INTO студентов (название, цвета) ЗНАЧЕНИЯ \t ('Джон', '{ "красный", "синий"}'), \t ('Cena', '{ "красный"}'), \t (» Templeman ',' {"orange"} '), \t (' Kristy ',' {"pink", "red"} '); SELECT * FROM students where colors && '{"red"}'; ' –