我的表:
CREATE TABLE public.invoice (
id bigint NOT NULL,
json_data jsonb NOT NULL
);
我的数据:
INSERT INTO public.invoice (id,json_data) VALUES
(1,'{"Id": 1, "Items": ["2", "3", "1"], "Invoice": "CR000012"}');
Todo列表:
需要添加到" item "一个新值,即"5"。(
["2", "3", "1","5"]
项输出)需要更新项值2到9。(
["9", "3", "1","5"]
项输出)
我在下面尝试过,但这将替换数组值,而不是更新或添加
UPDATE invoice SET json_data = jsonb_set(json_data, '{invoice }', '"4"') where Id ='1'
我建议你使用这种方法,你应该用数组的索引指向元素。
在您的例子中,您的代码应该看起来像这样,1。给Items添加一个新值"5
UPDATE invoice SET json_data = jsonb_set(json_data, {Items,0}, json_data->'Items' || '"5"', TRUE) where Id =1
2。
UPDATE invoice SET json_data = jsonb_set(json_data, {Items,0}, '"9"') where Id =1
你可以从这里查看PostgreSQL, JSON函数和操作符。