使用postgresql 9.3我可以选择JSON数据类型的特定字段,但是如何使用UPDATE修改它们?我在postgresql文档中或在线任何地方都找不到任何这样的例子.我试过了明显的事:
postgres=# create table test (data json);
CREATE TABLE
postgres=# insert into test (data) values ('{"a":1,"b":2}');
INSERT 0 1
postgres=# select data->'a' from test where data->>'b' = '2';
?column?
----------
1
(1 row)
postgres=# update test set data->'a' = to_json(5) where data->>'b' = '2';
ERROR: syntax error at or near "->"
LINE 1: update test set data->'a' = to_json(5) where data->>'b' = '2...
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 jsonb_set 更新数据库中的一系列 json 对象。我可以使用一个查询来使用字符串值更新对象,但是我似乎无法使用当前值来更新它。
UPDATE entity
SET properties = jsonb_set(properties, '{c_number}', concat('0', properties->>'c_number'))
WHERE type = 1 and length(properties->>'c_number') = 7
Run Code Online (Sandbox Code Playgroud)
上面的内容在当前格式下不起作用,我认为问题出在properties->>'c_number'jsonb_set 内部。有没有办法可以访问当前值并简单地添加前导 0?