Postgres 使用 jsonb 列中的值更新 int[] 列

问题描述 投票:0回答:1

我有一个包含整数数组的 JSONB 列,我想将其迁移到整数数组的本机列:

ALTER TABLE MyTable
ALTER COLUMN MyColumn TYPE int[] USING jsonb_array_elements(MyColumn)

但是,这不起作用:

变换表达式中不允许使用返回集合的函数

MyColumn
值如下所示:
[25,32]

sql arrays postgresql jsonb
1个回答
0
投票

我相信这是因为

jsonb_array_elements
返回一组行集而不是单个值。正如评论中提到的,我尝试了类似的方法来创建新列,然后更新新列

小提琴

ALTER TABLE MyTable
ADD COLUMN new_array_column int[];

UPDATE MyTable
SET new_array_column = (
    SELECT array_agg(elem::int)
    FROM jsonb_array_elements_text(MyColumn) AS elem
);

ALTER TABLE MyTable
DROP COLUMN MyColumn;

ALTER TABLE MyTable
RENAME COLUMN new_array_column TO MyTable;
© www.soinside.com 2019 - 2024. All rights reserved.