在更改表中将 json 转换为 text[]

问题描述

ALTER TABLE students
ALTER COLUMN hobbies type text[] using hobbies::text[];

显示无法将 json 转换为 text[]错误

解决方法

你需要一个辅助函数来做到这一点。

create function json_to_array(json) returns text[] language sql as $$ 
    select array_agg(x) from json_array_elements_text($1) f(x) 
$$;

ALTER TABLE students
ALTER COLUMN hobbies type text[] using json_to_array(hobbies);