首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >更改Postgres中JSONB列中的值类型

更改Postgres中JSONB列中的值类型
EN

Stack Overflow用户
提问于 2019-07-04 20:16:40
回答 1查看 90关注 0票数 0

我有JSONB类型的'subject‘列,它存储JSON对象。示例:{"team": "1234", "user": 5678}{"org": 123}或{"team":1234}。

我应该使用什么查询将{"team":"1234",...}的所有匹配项更改为{"team":1234,...}?

我试过了:

代码语言:javascript
运行
复制
UPDATE the_table SET subject = jsonb_set(subject, '{team}', (subject->>'team')::int)

但我得到了:

代码语言:javascript
运行
复制
ERROR: function jsonb_set(jsonb, unknown, integer) does not exist
LINE 2: SET subject = jsonb_set(subject, 'team', (subject->>'team'):... 
                      ^ 
HINT: No function matches the given name and argument types. You might need to add explicit type casts.
EN

Stack Overflow用户

回答已采纳

发布于 2019-07-04 20:24:46

只需将subject->>'team'结果直接转换为jsonb,而不是int。不要忘记添加WHERE过滤器,否则您的第二条记录将被删除。

demo:db<>fiddle

代码语言:javascript
运行
复制
UPDATE the_table 
SET subject = jsonb_set(subject, '{team}', (subject->>'team')::jsonb)
WHERE subject->>'team' IS NOT NULL;
票数 3
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56887776

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档