gpt4 book ai didi

sql - 如何更新 json 对象的键?

转载 作者:行者123 更新时间:2023-11-29 12:48:53 25 4
gpt4 key购买 nike

我的数据库 jsonb 列中有这个 json 格式

[
{
"firstName": "John",
"lastName": "Doe"
}
]

我想更新键“firstName”,该怎么做?

到目前为止我有这个查询:

UPDATE person
SET
field = jsonb_set(
field::jsonb,
concat('{0,firstName}')::text[],
'"newFirstName"'::jsonb)

但是上面的查询更新的是值而不是键。我怎样才能只更新键?

最佳答案

您可以在不使用 firstName 的情况下提取元素键,附加新的键/值,然后将其放回数组中:

update person
set field = jsonb_set(field,
'{0}',
((field -> 0) - 'firstName')||jsonb_build_object('newFirstName', field -> 0 -> 'firstName'));

(field -> 0) - 'firstName')返回没有名字键的第一个元素。

然后jsonb_build_object('newFirstName', field -> 0 -> 'firstName')使用新的键名构建一个新的键/值对,但现有值 firstName并将其附加到使用 || 的第一个表达式的结果中

然后使用 jsonb_set() 将上述结果放入第一个数组元素中


在线示例:https://rextester.com/YPF75074

关于sql - 如何更新 json 对象的键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58553637/

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