如果我想在PostgreSQL 9.3中为JSON类型添加另一个字段,有人可以向我解释一下我要做什么吗?似乎有很多函数可以从JSON中获取数据,但是没有什么可以简单地添加另一个字段。或者我忽略了什么?
如果我有这样的关系:
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”的字段,我该怎么办?
感谢您的帮助。非常感谢!
答案 0 :(得分:0)
总有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;