如何将PostgreSQL的JSONB列从JSON字符串转为JSON对象数组?
PostgreSQL JSONB列拆分为键值对独立对象数组的更新语句
要实现将JSONB列中的对象拆分为每个键值对单独的JSON对象并组成数组,你需要先拆分原对象的键值对,再逐个构建独立对象,最后聚合为数组。使用以下UPDATE语句:
UPDATE table_name SET data = ( SELECT jsonb_agg(jsonb_build_object(key, value)) FROM jsonb_each(data) );
语句说明:
jsonb_each(data):将原JSONB对象拆分为多行记录,每行包含key(原对象的键)和value(对应的值)jsonb_build_object(key, value):把每一组键值对转换为单独的JSON对象(如{"fruit":"apple"})jsonb_agg(...):将所有单独的JSON对象聚合为一个JSON数组- 子查询的结果直接赋值给
data列,完成更新
执行后,原数据{"fruit":"apple", "color":"blue"}会被更新为[{"fruit":"apple"}, {"color":"blue"}],符合需求。
内容的提问来源于stack exchange,提问作者Tasks
相关产品推荐
相关产品推荐

