当前位置: 首页 > news >正文

Postgresql处理JSON类型中替换某个属性值问题

一、问题描述

使用postgresql对json的特性使用sql批量处理json中某个属性的值
结构如下:

{"id": 1,"parentId": 123,"globalParameters": [{"value": "date","boardId": 123,"canReName": false}]
}

想要替换boardId的值

二、解决方案

有没有办法获取所选JSON数组元素的索引并将SELECT语句和UPDATE语句合并为一个?

update t_data 
settent_info= jsonb_set(tent_info::jsonb,array['globalParameters', elem_index::text, 'boardId'],parentid::text::jsonb,true)
from (select pos- 1 as elem_index,elem from t_data , jsonb_array_elements(tent_info::jsonb->'globalParameters') with ordinality arr(elem, pos)wheretype_id =33
) sub
wheretype_id =33;

基本执行上面就可以批量处理josn数组里面boardId的属性值了

三、处理单个属性值

update t_data set  
--content_info = jsonb_set(tent_info::jsonb,'{id}'::text[],id::text::jsonb)
content_info = jsonb_set(tent_info::jsonb,'{parentId}'::text[],parentid::text::jsonb)
where ype_id =33

因为是更新同一个tent_info字段,所有得分两次执行才行。

http://www.lryc.cn/news/265285.html

相关文章:

  • @德人合科技——天锐绿盾 | 图纸加密软件有哪些功能呢?
  • android 使用GSON 序列化对象出现字段被优化问题解决方案
  • 进入不了Bios?进入Bios的方法都在这了,肯定能进!
  • 手把手教你基于 FastGPT 搭建个人知识库
  • gitee 怎么添加SSH密钥
  • 万界星空开源MES/注塑MES/开源注塑MES/免费MES/MES源码
  • macOS 开发 - MASShortcut
  • 【大数据面试】Flink面试题附答案
  • 语音识别之百度语音试用和OpenAiGPT开源Whisper使用
  • Rust报错:the msvc targets depend on the msvc linker but `link.exe` was not found
  • 2312llvm,04后端上
  • springboot学习笔记(五)
  • 文件上传——后端
  • 虾皮开通:如何在虾皮上开通跨境电商店铺
  • C语言—每日选择题—Day60
  • 【3D生成与重建】SSDNeRF:单阶段Diffusion NeRF的三维生成和重建
  • 计算机网络:应用层
  • 现代雷达车载应用——第3章 MIMO雷达技术 3.2节 汽车MIMO雷达波形正交策略
  • Unresolved plugin: ‘org.apache.maven.plugins‘解决报错
  • 阿里云林立翔:基于阿里云 GPU 的 AIGC 小规模训练优化方案
  • 从0开始学Git指令
  • B039-SpringMVC基础
  • Tomcat报404问题解决方案大全(包括tomcat可以正常运行但是报404)
  • debian10安装配置vim+gtags
  • vue跳转方式
  • 基于ssm+jsp学生综合测评管理系统源码和论文
  • 网络基础篇【网线的制作,OSI七层模型,集线器和交换机的介绍,路由器的介绍与设置】
  • CSRF检测工具(XSRF检测工具)使用说明
  • docker 部署kafka
  • Android 架构 - 组件化