【发布时间】:2021-11-22 13:31:09
【问题描述】:
我想更新 PostgreSQL 数据库中的 JSONB 数组,但我得到的大多数解决方案都是用于更新值而不是键。我的目标是将键“SpindSpeed_Med”更改为“SpindleSpeed”,将“RapidOveride_Med”更改为“RapidOverride”。
查询以制作示例数据库:
CREATE TABLE test (
uid int,
tooldata jsonb
);
INSERT INTO test (uid, tooldata)
VALUES (1, '[
{
"Ftn": 1,
"SpindSpeed_Med": 1234,
"RapidOveride_Med": 100
},
{
"Ftn": 2,
"SpindSpeed_Med": 1234,
"RapidOveride_Med": 100
},
{
"Ftn": 3,
"SpindSpeed_Med": 1234,
"RapidOveride_Med": 100
}]'),
(2, '[
{
"Ftn": 1,
"SpindSpeed_Med": 1234,
"RapidOveride_Med": 100
},
{
"Ftn": 2,
"SpindSpeed_Med": 1234,
"RapidOveride_Med": 100
},
{
"Ftn": 3,
"SpindSpeed_Med": 1234,
"RapidOveride_Med": 100
}
]');
^更新了多行并添加了uid
预期结果:
[{"Ftn": 1, "SpindleSpeed": 1234, "RapidOverride": 100},
{"Ftn": 2, "SpindleSpeed": 1234, "RapidOverride": 100},
{"Ftn": 3, "SpindleSpeed": 1234, "RapidOverride": 100}]
我尝试过使用“jsonb_set”,但这只会改变值部分而不是键。此外,我使用了“jsonb_object_keys”和“jsonb_array_elements”的组合,但结果只给出了键,我无法将它放回数组中。提前致谢!
【问题讨论】:
标签: sql arrays postgresql jsonb