Вывод определенных словарей из списка
В таблице имеется колонка товара name_column JSONB[].
name_column = ARRAY[{"id": 1, "valid": true},
{"id": 2, "valid": false},
{"id": 3, "valid": false},
{"id": 4, "valid": true}]
Меня волнует как можно вывести именно те словари, в которых valid = true.
Проблема в том, что при таком запросе
SELECT * FROM table_name WHERE name_column -> 0 -> 'valid' = true; выдает ошибку ERROR: operator does not exist: jsonb[] -> integer
Ответы (1 шт):
Автор решения: asanisimov
→ Ссылка
SELECT *
FROM
(SELECT unnest(name_column) as value
FROM schema.table) ff
WHERE (ff.value->>'valid')::bool is true;
Out:
"{""id"": 1, ""valid"": true}"
"{""id"": 4, ""valid"": true}"
Функция unnest распаковывает массив в колонку, а дальше уже выбираете по условию.