postgreSQL使用值添加新键(如果不存在),并对其进行编辑

时间:2018-10-31 10:02:06

标签: json postgresql sql-update jsonb

我正在尝试运行以下命令,但它没有更新具有NULL值的列或没有此键的列:

update A a set 
a.jsonbcolumn = ('{"key":' 1 '}')

我正在使用Postgres 9.6.3,而jsonb_set对我不起作用。有什么建议吗?

谢谢

1 个答案:

答案 0 :(得分:0)

jsonb_set()是必经之路:

update a
  set jsonbcolumn = jsonb_set(jsonbcolumn, '{key}', '1');

如果未创建密钥,则可能是因为列值为NULL而不是空的JSON。在这种情况下,请使用coalesce()

update a
  set jsonbcolumn = jsonb_set(coalesce(jsonbcolumn,'{}'), '{key}', '1');

在线示例:https://rextester.com/MSU66547