【发布时间】:2015-08-22 19:42:46
【问题描述】:
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);
现在我想要的是
-
add 像 append_to_json_array 这样的东西接受实际的 jsondata,它是一个 json-array 和我必须添加到该 jsondata 数组的 newString,这个函数应该返回更新了 json 数组。
UPDATE jsontesting SET jsondata=append_to_json_array(jsondata, 'newString') WHERE id = 7; 删除从 json 数据数组中的一个值,一个用于删除该值的函数。
我尝试搜索 postgreSQL 的文档,但没有找到任何内容。
【问题讨论】:
-
"我不想为此创建多行" - 为什么不呢?这似乎是执行此操作的自然方式,标准化您的数据。仅仅因为 Postgres 提供 NoSQL/非关系数据类型并不意味着它们必须用于所有事情。我在您的示例中看不到任何需要将此值列表反规范化为一个 JSON 文档的内容。
-
你想如何删除值,按索引还是按值?
标签: arrays json postgresql postgresql-9.4 jsonb