gpt4 book ai didi

postgresql - postgres - 更新 jsonb 数组的语法

转载 作者:行者123 更新时间:2023-11-29 14:31:47 27 4
gpt4 key购买 nike

我正在努力寻找在 postgres 9.6.6 的 jsonb 列中更新数组的正确语法

给定一列“评论”,用这个例子:

[
{
"Comment": "A",
"LastModified": "1527579949"
},
{
"Comment": "B",
"LastModified": "1528579949"
},
{
"Comment": "C",
"LastModified": "1529579949"
}
]

如果我想将 Z 附加到每个评论(给出 AZ、BZ、CZ)。

我知道我需要使用类似jsonb_set(comments, '{"Comment"}',

有什么关于完成这个的提示吗?

谢谢。

最佳答案

尝试:

UPDATE elbat
SET comments = array_to_json(ARRAY(SELECT jsonb_set(x.original_comment,
'{Comment}',
concat('"',
x.original_comment->>'Comment',
'Z"')::jsonb)
FROM (SELECT jsonb_array_elements(elbat.comments) original_comment) x))::jsonb;

它使用 jsonb_array_elements() 获取数组元素集,使用 jsonb_set() 将更改应用于它们,将其转换为数组并返回到 jsonarray_to_json()

但这是一项非常繁重的工作。好的,也许有一个更优雅的解决方案,但我没有找到。但是由于您的 JSON 似乎有一个固定的模式,我建议重新设计以关系方式进行,并有一个简单的评论表以及评论所在对象的链接表。在这样的模型中,改变肯定会非常非常容易。

关于postgresql - postgres - 更新 jsonb 数组的语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50668305/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com