Каким образом корректно извлечь первый подходящий элемент массива jsonb в Postgresql?
Добрый день, коллеги. Немного запутался, требуется помощь.
Есть jsonb поле addresses вида [{"region": "Московская обл", "addressType": "юридический"}, {"region": "Обнинск", "addressType": "фактический"}].
Порядок элементов не гарантирован, как и обязательное их наличие.
Требуется извлечь только поле region для юридического адреса.
Everything_is_bad, Понятно, что удобнее на уровне ЯП, но в данной ситуации, такой возможности нет - требуется создать материализованное представление с только нужными полями.
Сергей Попов, может тогда базу нормализовать? jsonb удобен именно на уровне выше, а как только его обработка встречается в sql, первый звоночек, что лучше в отношения выносить, а то потом это всё в нечитаемую кашу в запросах превращается, поддерживать очень сложно становится
select data ->> 'region' as region
from some_table
cross join lateral jsonb_array_elements(some_jsonb_field) as t(data)
where data ->> 'addressType' = 'юридический';