PostgreSQL и выборка из полей содержащих JSON
Postgre позволяет хранить данные в JSON с колонках с типами json и jsonb, которые по сути отличаются только способом хранения. json — в виде текста (хорошо видно визуально, можно обрабатывать запросы как с «текстом») и jsonb — в виде сжатых бинарных данных (занимает меньше места, можно индексировать. Причем если данные хранятся в виде jsonb, то порядок сохранения ключей в JSON не гарантируется. В принципе вполне удобно хранить так данные, если не возможно заранее определить точно структуру таблицы.
Ну и ниже пример работы с такими данными.
Вставка:
1 |
insert into epd_expansion (period,ls,orgid,parties) values ('2025-10-01',1,2,'[4,5,6]') |
Выборка:
1 |
SELECT * FROM public.epd_expansion where parties is not null; |

А вот так например, как можно например сделать выборку всех строк, имеющих в массиве partise число 3:
1 |
SELECT * FROM public.epd_expansion where parties@>'[3]'::jsonb; |
