更新/添加数组值



我的表:

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列表:

  1. 需要添加到" item "一个新值,即"5"。(["2", "3", "1","5"]项输出)

  2. 需要更新项值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函数和操作符。

最新更新