在postgres中更新JSON

时间:2015-03-05 12:45:12

标签: json postgresql

我有一个带有json字段的表(NOT json-b),需要删除存在一些记录的密钥(或将值设置为'')。

如何使用SQL更新此表?

我已经看到了this的问题,但感觉这应该是一种更简单的方法。

1 个答案:

答案 0 :(得分:2)

首先:如果您要更新很多值,json可能是数据库设计中的错误选择:

Pure SQL:

UPDATE tbl
SET    json_col = (
   SELECT concat('{', string_agg(to_json(j.key) || ':' || j.value, ','), '}')::json
   FROM   json_each(json_col) j
   WHERE  j.key <> 'delete_this_key'
   )
WHERE  json_col->>'delete_this_key' <> ''; -- only applicable rows!

相关: