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

PostgreSQL 15.4中如何将text[]类型列转换为jsonb[]类型?

将text[]列转换为jsonb[](PostgreSQL 15.4)

步骤1:排查无效JSON数据

首先要确认原text[]列里的每个字符串都是合法JSON,避免转换失败:

-- 找出包含无效JSON的行及对应内容
SELECT
  id, -- 替换为表的主键/唯一标识列
  x AS invalid_json_text
FROM certificate, unnest(criterias) AS x
WHERE NOT pg_is_json(x);

如果查询返回结果,先修复这些无效JSON(比如补全引号、修正语法),再进行下一步。

步骤2:执行列类型转换

确认所有JSON合法后,直接用ALTER TABLE完成类型转换:

ALTER TABLE certificate
ALTER COLUMN criterias TYPE jsonb[]
USING array(SELECT jsonb(x) FROM unnest(criterias) AS x);

这条语句会把原text[]数组的每个元素解析为jsonb,再重新组合成jsonb[]数组,直接替换原列的类型和数据。

验证转换结果

转换完成后,可查询验证数据是否正确:

SELECT
  id,
  criterias,
  jsonb_typeof(criterias[1]) -- 检查第一个元素类型,正常应返回"object"
FROM certificate
LIMIT 5;

内容的提问来源于stack exchange,提问作者Ahmet yazıcı

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 01:11:16