使用jsonb_set更新JSON类型的列

问题描述

我尝试通过data更新json表的books列(类型为jsonb_set

UPDATE books 
SET data = jsonb_set(data,'{borrowers}','[{"name":"john doe","time":"1:00PM"}]')
WHERE id= 'some_id';

并遇到此错误

> ERROR:  function jsonb_set(json,unkNown,unkNown) does not exist

我发现在doc中,jsonb_set仅适用于jsonb类型

jsonb_set(target jsonb,path text[],new_value jsonb [,create_missing boolean])

但是我没有特权将列类型更新为jsonb。那么在这种情况下我该如何解决

解决方法

通过类型转换来掌握一个简单的技巧

UPDATE books 
SET data = jsonb_set(data::jsonb,'{borrowers}','[{"name":"john doe","time":"1:00PM"}]')
WHERE id= 'some_id';