SQL JSON помогите пожалуйста

Всем привет, у меня есть таблица в которой есть колонка формата JSON, в ней следующий формат

Таблица название - Payment Колонка где лежит JSON - Data

{
    "locationId": "111",
    "operatorId": 1111,
    "enteredDate": "2022-03-19T14:02:57.767-05:00",
    "settlements": [
        {
            "type": "Credit Card",
            "amount": 0.01,
            "reference": " "
        },
        {
            "type": "Credit Card",
            "amount": 1284.87,
            "reference": "MasterCard 1256"
        }
    ],
    "Route": 23
}

Нужно сделать запрос чтобы из этой колонки в которой данные в формате JSON выбрать только те записи где есть setlement запись с "amount": 0.01 потому что такой записи может и не быть


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

Автор решения: RSK

Под рукой нет PostgreSQL, но должно быть примерно так

SELECT *
FROM Payment
WHERE EXISTS (
    SELECT 1
    FROM jsonb_array_elements(Data -> 'settlements') AS settlement
    WHERE (settlement ->> 'amount')::numeric = 0.01
);
→ Ссылка