У меня есть текстовый столбец в Postgresql, который я хочу преобразовать в столбец JSONB.
Я пробовал вот что:
CREATE TABLE test (id serial, sec text, name text);
INSERT INTO test (id, sec, name) VALUES (1,'{"gender":"male","sections":{"a":1,"b":2}}','subject');
ALTER TABLE test ALTER COLUMN sec TYPE JSONB USING sec::JSONB;
Это преобразовало текстовый столбец в jsonb
.
Однако, если я попытаюсь запросить:
SELECT sec->>'sections'->>'a' FROM test
Я получаю сообщение об ошибке.
Я вижу, что преобразование выполняется только на одном уровне (то есть: sec - >> 'section' отлично работает).
Запрос SELECT pg_typeof(name->>'sections') from test;
дает мне тип столбца в виде текста.
Есть ли способ полностью преобразовать текст в jsonb, чтобы я мог успешно запросить SELECT sec->>'sections'->>'a' FROM test;
?
Я не хочу преобразовывать текст в json в запросе, как показано ниже, так как мне нужно создать индекс для «a» позже.
select (sec->>'sections')::json->>'a' from test;