postgres change jsonb[] to jsonb

前端 未结 2 1122

I use postgres9.4, and there exists relation \"Patients\" has column \"contact\" with type jsonb[], how to transfer type jsonb[] to

2条回答
  •  长情又很酷
    2020-12-20 10:14

    If only the first element of jsonb array is used then the issue is simple:

    alter table "Patients" alter column contact type jsonb using contact[1]::jsonb;
    

    else you can use the following function:

    create or replace function jsonb_array_to_jsonb(jsonb[])
    returns jsonb language sql as $$
        select jsonb_object_agg(key, value)
        from unnest($1), jsonb_each(unnest)
    $$;
    
    alter table "Patients" alter column contact type jsonb using jsonb_array_to_jsonb(contact);
    

提交回复
热议问题