sql - 在 Postgres 中修改 Jsonb 内部的字段
问题描述
我正在浏览 Postgres Jsonb 文档,但无法为我遇到的一个小问题找到解决方案。
我有一张桌子:MY_TABLE
具有以下列:
用户、姓名、数据和购买
需要注意的一点是“数据”是一个 jsonb 并且有多个字段。“数据”中的一个字段是“属性”,但它目前是一个字符串。我怎样才能将其更改为字符串列表?
我曾尝试使用 json_build_array 但没有任何运气
例如,我希望我的 jsonb 看起来像:
{
"Id": 1,
"Attributes": ["Test"]
}
代替
{
"Id": 1,
"Attributes": "Test"
}
我只关心 Json 内部的“属性”字段,而不关心任何其他字段。
解决方案
您可以使用jsonb_set()
and来执行此操作jsonb_build_array()
,如下所示:
jsonb_set(js, '{Attributes}', jsonb_build_array(js->> 'Attributes'))
with t as (select '{ "Dd":1, "Attributes":"Test"}'::jsonb js)
select
js,
jsonb_set(js, '{Attributes}', jsonb_build_array(js->> 'Attributes')) new_js
from t
js | new_js :-------------------------------- | :-------------------------------- {“Dd”:1,“属性”:“测试”} | {“Dd”:1,“属性”:[“测试”]}
推荐阅读
- python - 如何检查名称是否在 python 中的名称列表中?
- swiftui - iOS 14 帧尺寸无效(负数或非有限)
- python - 尝试通过在其他列上应用条件来过滤数据框中的列
- python - 列表推导过滤嵌套的 python 列表数据(json api 请求或转换的列表 python)
- ember.js - 这是 @cached 用于自动跟踪 Ember Octane 的有效用法吗?
- reactjs - 从组件的提要重定向到单个组件
- constraints - 获取雪花中的主键列列表
- javascript - “找不到‘异步’的类型定义文件。TS2688”
- python - 是等待抓取延迟的页面部分吗?
- powershell - 如何从 powershell 导出外部 Google GAM 命令的任何消息到 txt