PostgreSQL - как выполнить select из json массива с условием по элементу массива?

Есть таблица с типом колонки jsonb.

    {
        "key1": 
     [
   {"file": "U2323.DAT", "tt_date": "2023-12-03 22:22:12"}, 
   {"file": "V000.DAT", "tt_date": "2025-12-03 22:22:12"}
    ]
    }

Есть запрос на получение всех данных по определенным элементам.

select
jsonb_array_elements(status->'key1')->>'file' as file,
jsonb_array_elements(status->'key1')->>'tt_date' as tt_date
from  status;

Как добавить условие для получения элементов file у которых значение начинается с 'U2' ? Не понятно как в условии обращаться к конкретному элементу массива и задать условиe.


Ответы (1 шт):

Автор решения: Мелкий

Вызвать set-returning function как явный join вместо неявного использования в select

select
    j->>'file' as file,
    j->>'tt_date' as tt_date
from  status
cross join jsonb_array_elements(status->'key1') as j
where j->>'file' like 'U2%';
→ Ссылка