У меня есть текстовый столбец в Postgresql, который я хочу преобразовать в столбец JSONB.Как преобразовать текст в jsonb целиком для столбца postgresql
То, что я попытался это:
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
Я получаю сообщение об ошибке.
Я вижу, что преобразование выполняется только на одном уровне (например, сек - >> «разделы отлично работают).
Запрос SELECT pg_typeof(name->>'sections') from test;
дает мне тип столбца как текст.
Есть ли способ, которым я могу полностью преобразовать текст в jsonb, чтобы я мог запросить SELECT sec->>'sections'->>'a' FROM test;
успешно?
Я не хочу преобразовывать текст в json в запрос, как показано ниже, поскольку мне нужно создать индекс на 'a' позже.
select (sec->>'sections')::json->>'a' from test;