首页 > 解决方案 > 使用 jsonb_set() 更新 JSON 类型的列

问题描述

我试图通过更新表的data列(类型为jsonbooksjsonb_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

我发现在文档中,jsonb_set只能使用jsonbtype

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

但我无权将列类型更新为jsonb. 那么在这种情况下我该如何解决呢?

标签: sqljsonpostgresqlsql-updatejsonb

解决方案


通过类型转换想出了一个简单的技巧

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

推荐阅读