我在更新JSON数据时遇到错误
CREATE TABLE testTable
AS
SELECT $${
"id": 1,
"value": 100
}$$::jsonb AS jsondata;
我希望在访问许多网站后添加1,将value
更新为101
UPDATE testTable
SET jsondata = JSONB_SET(jsondata, '{value}', (jsondata->>'value')::int + 1);
但是上面的一个是错误“无法将jsonb转换为int”
我的预期输出是
{
"id": 1,
"value": 101
}
答案 0 :(得分:2)
查看jsonb_set的签名(使用\df jsonb_set
)
Schema | Name | Result data type | Argument data types | Type
------------+-----------+------------------+----------------------------------------------------------------------------------------+--------
pg_catalog | jsonb_set | jsonb | jsonb_in jsonb, path text[], replacement jsonb, create_if_missing boolean DEFAULT true | normal
你想要的是......
UPDATE testTable
SET jsondata = jsonb_set(
jsondata,
ARRAY['value'],
to_jsonb((jsondata->>'value')::int + 1)
)
;