在Postgres中将jsonb转换为jsonb数组

时间:2018-07-24 16:56:50

标签: json postgresql jsonb

在设计架构时我犯了一个错误。我在应为<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script> <div id="root"></div>的时候创建了一个列jsonb。有没有办法将数据转换/转换为jsonb[]

该列中的数据是文本元素的jsonb数组,它恰好被强制转换为jsonb[]而不是jsonb

类似的东西:

jsonb[]

更大的目标是将该列放入纯pg文本数组select jsonb_to_jsonb_array(jsonb_col) from mytable 中,以便可以对其进行text[]编辑。我知道如何使用unnest来做到这一点,但是遇到jsonb[]的问题。

2 个答案:

答案 0 :(得分:1)

此语法对我有用

ALTER TABLE mytable
ALTER COLUMN jsonb_col TYPE JSONB[] USING ARRAY[jsonb_col]::jsonb[];

答案 1 :(得分:1)

使用功能:

create or replace function jsonb_text_array(jsonb)
returns text[] language sql immutable as $$
    select array(select jsonb_array_elements_text($1))
$$;

alter table my_table alter jsonb_col type text[] using jsonb_text_array(jsonb_col)

DbFiddle.