【发布时间】:2015-03-05 12:45:11
【问题描述】:
我有一个带有json 字段(不是json-b)的表,需要删除一些记录中存在的键(或将值设置为'')。
如何使用 SQL 更新此表?
我看过this的问题,但感觉应该有更简单的方法来解决这个简单的问题。
【问题讨论】:
-
根级别的所有键,没有嵌套,对吧?请始终提供您的 Postgres 版本。
标签: json postgresql
我有一个带有json 字段(不是json-b)的表,需要删除一些记录中存在的键(或将值设置为'')。
如何使用 SQL 更新此表?
我看过this的问题,但感觉应该有更简单的方法来解决这个简单的问题。
【问题讨论】:
标签: json postgresql
首先:如果您经常更新值,json 在您的数据库设计中可能是一个糟糕的选择:
纯 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!
相关:
【讨论】: