修改 Postgres json 列中的现有字段

Modifying existing field in json column in Postgres

所以我正在尝试更新我的 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;

但是我遇到了语法错误。有没有人试过这样的东西?

这可能会变得非常棘手,但您可以通过一些转换来实现。它像这样对我有用:

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