gpt4 book ai didi

arrays - 在 PostgreSQL 9.2、9.3 和 9.4 中追加(推送)和删除 JSON 数组?

转载 作者:行者123 更新时间:2023-11-29 11:19:20 25 4
gpt4 key购买 nike

For versions greater 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);

现在我想要的是

  • addappend_to_json_array 这样的东西接受实际的 jsondata,这是一个 json 数组和我必须添加到那个 jsondata 数组和这个函数的 newString应该返回更新后的 json 数组。

    UPDATE jsontesting
    SET jsondata=append_to_json_array(jsondata, 'newString')
    WHERE id = 7;
  • 从json数据数组中移除一个值,一个移除值的函数。

我试图搜索 postgreSQL 的文档,但在那里找不到任何东西。

最佳答案

Radek 的想法可以用来定义这些方便的函数:

create function jsonb_array_append(j jsonb, e text)
returns jsonb language sql immutable
as $$
select array_to_json(array_append(array(select * from jsonb_array_elements_text(j)), e))::jsonb
$$;

create function jsonb_array_remove(j jsonb, e text)
returns jsonb language sql immutable
as $$
select array_to_json(array_remove(array(select * from jsonb_array_elements_text(j)), e))::jsonb
$$;

create function jsonb_array_replace(j jsonb, e1 text, e2 text)
returns jsonb language sql immutable
as $$
select array_to_json(array_replace(array(select * from jsonb_array_elements_text(j)), e1, e2))::jsonb
$$;

实际的功能:

select jsonb_array_append('["alfa", "beta", "gamma"]', 'delta');
jsonb_array_append
------------------------------------
["alfa", "beta", "gamma", "delta"]

select jsonb_array_remove('["alfa", "beta", "gamma"]', 'beta');
jsonb_array_remove
-------------------
["alfa", "gamma"]

select jsonb_array_replace('["alfa", "beta", "gamma"]', 'alfa', 'delta');
jsonb_array_replace
----------------------------
["delta", "beta", "gamma"]

如果证明它们对您有用,请感谢 Radek 的回答。但是,我必须补充一点,我完全同意 a_horse 的评论。

关于arrays - 在 PostgreSQL 9.2、9.3 和 9.4 中追加(推送)和删除 JSON 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30707482/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com