首页 > 解决方案 > 修改 Postgres 中 json 列中的现有字段

问题描述

所以我正在尝试更新我的 postgres 数据库中的一些条目。特别是我正在尝试使用现有值修改字段值。例如,假设我有以下 json

{"var1": 10, "var2": 0.003, "var3": null}

我想将 var2 更新为 var2*100。我使用更新语句更新了值,例如

UPDATE my_table SET json_column = jsonb_set(my_column, '{var2}', '0.003', true) WHERE (my_column->'var2') is null;

所以我正在尝试使用等效的语句

UPDATE my_table SET my_column = jsonb_set(json_column, '{var2}', '(json_column->'var2)::double precision*100', true) WHERE id = 12;

但是我面临语法错误。有没有人尝试过这样的事情?

标签: jsonpostgresqljsonb

解决方案


这可能会变得非常棘手,但你可以通过一些演员来实现。它对我有用:

UPDATE my_table
SET my_column = jsonb_set(json_column, '{var2}', to_jsonb((json_column->'var2')::double precision*100), true)
WHERE id = 12;

推荐阅读