котором храняться данные вида [{"value": 2, "property": 1}, {"value": 3, "property": 2}, {"value": 47835, "property": 3}, {"value": 13, "property": 4}, {"value": 15, "property": 5}, {"value": false, "property": 6}, {"value": [23, 24, 25, 26, 27, 28, 29, 31, 32, 33], "property": 7}, {"value": 50747, "property": 8}, {"value": 21, "property": 9}]. Мне необходимо выбрать все записи, у которых значения value содержат данные из массива, допустим, [2, 11, 3, 5, 6, 7, 22, 23, 33]. Подскажите, куда копать?
Для начала можно научиться выбирать данные из jsonb поля - https://hackernoon.com/how-to-query-jsonb-beginner-sheet-cheat-4da3aa5082a3 Потом просто использовать оператор IN - https://www.w3schools.com/sql/sql_in.asp
В базовом функционале, видимо, придётся вытаскивать нужные значения в массив/рекордсет и потом уже сравнивать. Т.е. что-то типа: where exists (select value from json_populate_recordset(...) @> ANY(ARRAY[21,22,23]))) (пример с потолка; скорее всего ещё раз где-то надо развернуть список) Либо есть какие-то навороты для улучшения работы с JSON. Но их надо сперва в Постгрес вкрутить.
Обсуждают сегодня