You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL将JSONB整数数组列迁移至int[]列报错求助

解决JSONB数组转原生int[]列的报错问题

你之前的SQL报错是因为jsonb_array_elements是返回多行结果的集合函数,而ALTER COLUMN的USING子句要求为每一行返回单个转换后的值,所以这个函数不符合要求。

针对你的场景,有两种可行的转换方式:

方法一:直接强制转换(简洁高效)

利用JSONB数组的文本格式与PostgreSQL原生int[]格式的兼容性,直接做类型转换:

ALTER TABLE MyTable
ALTER COLUMN MyColumn TYPE int[] USING MyColumn::text::int[];

方法二:聚合元素转换(更稳妥)

如果担心格式兼容问题,可以通过子查询逐个提取元素再聚合为int数组:

ALTER TABLE MyTable
ALTER COLUMN MyColumn TYPE int[] USING (
  SELECT array_agg(element::int)
  FROM jsonb_array_elements_text(MyColumn) AS element
);

转换完成后,你可以执行SELECT MyColumn FROM MyTable;验证结果,原JSONB值[25,32]会被转为PostgreSQL原生数组格式{25,32}。

内容的提问来源于stack exchange,提问作者xBlue

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 11:19:58