"67": 1643679408, "94": 1642208957, "177": 1642213866}) и столбец id, как мне правильнее сделать распаковку данного объекта? чтоб на выходе получить три столбца id, key, value?
Используйте функцию json_each_text на поле с jsonb, на выходе получите два поля key и value с типом "текст". id можно будет просто скопировать, заново выбрать. Привести тип "текст" к целочисленному можно с помощью функции CAST с директивой AS.
идея на 1 этапе понятна: select key, value from json_each('{"a":"foo", "b":"bar"}'), но как дальше правильно построить запрос(именно написать) просто не понимаю(
Если дойдут руки, попробую посмотреть, но не обещаю, что это случится сегодня.
Буду рад хоть какому нибуть примеру) спасибо за помощь
select id ,tt.* from table1 as t1, jsonb_each_text('{"a":"foo", "b":"bar"}') tt --'{"a":"foo", "b":"bar"}' поле из таблицы это нужно или нет?
ERROR: cannot call jsonb_each_text on a non-object, поле из таблицы в каком виде нужно подставлять? нужно просто развернуть карту в ключ значение в два столбца
select r.registry_id , tt.key,tt.value from r59.registry r ,jsonb_each_text(r.registry_evnnum::jsonb) tt но у нас поле registry_evnnum varchar, поэтому мы приводили к ::jsonb и все работает, у вас то оно вроде изначально jsonb
Понял, спасибо, попробую)
спасибо помогло, ошибка была потому что поле было пустым) не сразу понял
Обсуждают сегодня