sql - 使用 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
我发现在文档中,jsonb_set
只能使用jsonb
type
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';
推荐阅读
- java - 如何将 Int 添加到通用 Arraylist,我不确定我是疯了还是不可能
- if-statement - 如何让 Mandrill 根据 MERGE 值显示图像?
- database - VB.NET如何在函数中传递数据库的值
- python - 如何使用 pandas 和 sqlalchemy 将 VARIANT 或 ARRAY 数据类型插入 Snowflake
- javascript - 即使我的 HTMLCollection 有 10 个元素, slides[0] 返回未定义?
- java - 我只能用 Kotlin 获取 html 源代码的 div 吗?
- ios - 我的位置相同,但节点不在同一个地方?
- r - 根据类变量转换一个变量
- javascript - 如何访问用户上传的 EPUB 文件中每一章的原始文本
- machine-learning - 检查目标时出错:预期 dense_2 有 2 个维度,但得到了形状为 (2, 3, 3) 的数组