PostgreSQL 9.3:向JSON类型添加新字段
如果我想在PostgreSQL 9.3中为JSON类型添加另一个字段,请有人向我解释一下我必须做什么?似乎有很多函数可以从JSON中获取数据,但没有任何函数可以简单地添加另一个字段。还是我忽略了什么 例如,如果我有以下关系:PostgreSQL 9.3:向JSON类型添加新字段,json,postgresql,Json,Postgresql,如果我想在PostgreSQL 9.3中为JSON类型添加另一个字段,请有人向我解释一下我必须做什么?似乎有很多函数可以从JSON中获取数据,但没有任何函数可以简单地添加另一个字段。还是我忽略了什么 例如,如果我有以下关系: Id| Data (JSON) 1 | {"items": ["abc", "def", "ghi"], "user_id": 328252955} 2 | {"items": ["klm"], "user_id": 328250000} 3 | {"items":
Id| Data (JSON)
1 | {"items": ["abc", "def", "ghi"], "user_id": 328252955}
2 | {"items": ["klm"], "user_id": 328250000}
3 | {"items": ["abc", ghi], "user_id": 328252955}
...
如果我想在第一行添加一个名为“name”且内容为“foo bar”的字段,我该怎么办
谢谢你的帮助。非常感谢 总是有Python
create or replace function jsonset(orig json, attr text, val json)
returns json language plpythonu as
$$
import json
odict = json.loads(orig)
odict[attr] = json.loads(val)
return json.dumps(odict)
$$;
然后你可以做:
update mytable set
Data = jsonset(Data, 'name', '"foo bar"'::json)
where Id = 1;
答案很简单:你不能——至少不能用SQL。你总是需要重写整个专栏,我很担心。感谢您的anwser。9.4可能会添加函数来操作json(添加字段等),但它仍然需要设置整个列,这只会使操作json更容易。这大大降低了json的灵活性。。。