繁体   English   中英

PostgreSQL 将 JSONB 列从 JSON 字符串更新为 JSON 对象数组

[英]PostgreSQL update JSONB column from JSON string to Array of JSON objects

我正在尝试从 JSON 字符串更新 JSONB 列的值,例如:

{"fruit":"apple", "color":"blue"}

到 JSON 个对象的数组,例如:

[{"fruit":"apple"}, {"color":"blue"}]

我尝试了以下命令:

UPDATE table_name SET data = json_build_array(data::JSONB);

然而,它给了我以下内容:

[{"fruit":"apple","color":"blue"}]

我可以使用什么来获取数组中单独的 JSON 个对象?

您可以使用json_each访问 JSON object 中的每个键值对,然后将结果聚合到一个数组中:

update table_name set data = (select json_agg(json_build_object(v.key, v.value)) 
                              from json_each(data) v)

见小提琴

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM