@Cruper
web-падаван

Как получить записи, json поле которых включает не менее одного значения из переданных?

Как из таблицы вида:
id|name|json_data
1|vasya|{"tags": ["a", "b", "c"]}
2|lena|{"tags":["d", "e", "f"]}
3|dima|{"tags": ["x", "y", "z"]}


Получить выборку:
id|name|json_data
1|vasya|{"tags": ["a", "b", "c"]}
3|dima|{"tags": ["x", "y", "z"]}


SELECT * FROM table WHERE "table"."json_data" ??? '{"tags":["a", "b", "c", "y"]}';


То есть все пересечения хотя бы с одним элементом переданного массива.
  • Вопрос задан
  • 45 просмотров
Решения вопроса 1
@Cruper Автор вопроса
web-падаван
Для реализации такой выборки пришлось немного поменять структуру данных. Тем более, что это даже помогло в проекте.
Запрос будет такого вида:
SELECT * FROM "table" WHERE "teble"."data" ?| array['a', 'b', 'c', 'y'];


Поле json_data поменялось. Вместо вложенного массива тэгов, они вылезли на верхний уровень json объекта.
id|name|json_data
1|vasya|{"a": 0.1, "b": 0.2, "c": 0.3}
2|lena|{"d": 0.3, "e": 0.4, "f": 0.8}
3|dima|{"x": 0.2, "y": 0.2, "z": 0.3}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы