Как перебрать данные json с помощью запроса sql / knex js - PullRequest
0 голосов
/ 26 марта 2020

Я использую postgresql db. У меня есть таблица с именем «offer», в которой есть столбец «validity», который содержит следующие данные в формате JSON:

[{"end_date": "2019-12-31", "program_id": "4", "start_date": "2019-10-27"}, 
{"end_date":"2020-12-31", "program_id": "6", "start_date": "2020-01-01"}, 
{"end_date": "2020-01-01", "program_id": "3", "start_date": "2019-10-12"}]

Теперь я хочу чтобы получить все записи, где столбец 'validity' содержит: program_id = 4 и end_date> current_date.

Как написать SQL запрос или knex js запрос для достижения этого? Заранее спасибо

1 Ответ

0 голосов
/ 26 марта 2020

Вы можете использовать условие EXISTS:

select o.*
from offers o
where exists (select *
              from jsonb_array_elements(o.validity) as v(item)
              where v.item ->> 'program_id' = '3'
                and (v.item ->> 'end_date')::date > current_date)

Онлайн пример

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...