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 数组和我必须添加到那个 jsondata 数组和这个函数的 newString应该返回更新后的 json 数组。
UPDATE jsontesting SET jsondata=append_to_json_array(jsondata, 'newString') WHERE id = 7;
从json数据数组中移除一个值,一个移除值的函数。
我试图搜索 PostgreSQL 的文档,但在那里一无所获。
最佳答案
要添加值,请使用 JSON 数组追加运算符 (||
)
UPDATE jsontesting
SET jsondata = jsondata || '["newString"]'::jsonb
WHERE id = 7;
删除值看起来像这样
UPDATE jsontesting
SET jsondata = jsondata - 'newString'
WHERE id = 7;
连接到嵌套字段看起来像这样
UPDATE jsontesting
SET jsondata = jsonb_set(
jsondata::jsonb,
array['nestedfield'],
(jsondata->'nestedfield')::jsonb || '["newString"]'::jsonb)
WHERE id = 7;
关于arrays - 在 PostgreSQL 9.5+ 中追加(推送)和从 JSON 数组中删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42233542/