For versions less than 9.5 see this question
我在PostgreSQL中创建了一个表:
CREATE TEMP TABLE jsontesting
AS
SELECT id, jsondata::jsonb FROM ( VALUES
(1, '["abra","value","mango", "apple", "sample"]'),
(2, '["japan","china","india", "russia", "australia"]'),
(3, '["must", "match"]'),
(4, '["abra","value","true", "apple", "sample"]'),
(5, '["abra","false","mango", "apple", "sample"]'),
(6, '["string","value","mango", "apple", "sample"]'),
(7, '["must", "watch"]')
) AS t(id,jsondata);
现在我想要的是
*add类似于 append_to_json_array 的函数接受实际的jsondata,它是一个json-array和我必须添加到jsondata数组的newString,这个函数应该返回更新后的json-array。
UPDATE jsontesting
SET jsondata=append_to_json_array(jsondata, 'newString')
WHERE id = 7;
*remove从json数据数组中删除一个值,一个用于删除该值的函数。
我试图搜索PostgreSQL的文档,但没有找到任何东西。
4条答案
按热度按时间fbcarpbf1#
使用JSON数组append opperator(
||
)添加值删除该值如下所示
串联到嵌套字段如下所示
jhiyze9q2#
为了补充Evan卡罗尔的答案,如果列是
NULL
,您可能需要执行以下操作以将列设置为空数组。如果列当前为NULL
,则追加运算符(||
)不执行任何操作。gjmwrych3#
我在postgres中使用新的键值对追加到现有的json数据时遇到了类似的问题。我能够使用append操作符
||
解决这个问题,如下所示:bkhjykvo4#
**- replace(update)**json数据数组中的一个值(将'oldString'替换为'newString'):