我有简单的表table_b
| id(整数)|数据(json)|文本(文本)|
| - ------|- ------|- ------|
| 1个|{}|是的|
| 第二章|{}|没有|
Json看起来像
{"types": [{"key": "first_event", "value": false}, {"key": "second_event", "value": false}, {"key": "third_event", "value": false}...]}
我只想修改数据并添加到array ["test1","test2"]中的每个JSON对象,看起来像这样:
{"types": [{"key": "first_event", "value": false, "can":["test1", "test2"] }, {"key": "second_event", "value": false , "can":["test1", "test2"]}, {"key": "third_event", "value": false , "can":["test1", "test2"]}...]}
当然,只有像"是"这样的文字我才尝试过:
UPDATE table_b
SET data = jsonb_set(data , '{types,can}', '["test1", "test2"]'::jsonb, true)
where text like 'yes';
但是它不起作用,我怎么循环表_b和数据列?
2条答案
按热度按时间tcbh2hod1#
JSON对象的数组值是可以修改的,只需修改给定索引中的值即可。
carvr3hs2#
使用此示例数据
此查询更新每个数组元素,并保持
ORDINALITY
列中的顺序下一个查询将更新的元素连接回数组(保持正确的顺序)并执行简单的更新