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

news/2024/7/9 21:41:49 标签: postgresql, json, 数据库

一、问题描述

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

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

想要替换boardId的值

二、解决方案

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

update 
    t_data 
set
    tent_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)
    where
        type_id =33
) sub
where
   type_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.niftyadmin.cn/n/5277260.html

相关文章

CVE-2022-34625 mealie jinja2 SSTI注入

安装 官方指导:https://docs.mealie.io/documentation/getting-started/install/ docker search mealie docker pull hkotel/mealie docker run -p 9925:80 -v pwd:/app/data/ -d hkotel/mealie:latest记得-d使其在后台运行,否则主机命令行会一直被回显…

xcode上传app store connect后testflight没有可构建版本的原因

查看你的邮箱, 里面有原因提示 一般为使用了某些权限, 但是plist没有声明 xcode 修改display name后名字并没有改变 原因是并没有修改到plist的CFBundleDisplayName的字段 将CFBundleDisplayName的值修改为${INFOPLIST_KEY_CFBundleDisplayName} INFOPLIST_KEY_CFBundleDispla…

51单片机简易出租车计费系统仿真设计

51单片机简易出租车计费系统仿真设计( proteus仿真程序报告讲解视频) 仿真图proteus 8.9及以上 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:S0036 1.主要功能: 出租车计费系统设计内容: 1、…

Qt 国际化——创建中英文翻译步骤

Qt 国际化——创建中英文翻译步骤 说明:之前我的csdn博客,第一篇文章发表的就是Qt国际化的文章(点击打开),写的也过于简单了: 今天,这篇文章再详细的记录下,中英文翻译的步骤。 一…

DC-8靶场

目录 DC-8靶场链接: 首先进行主机发现: sqlmap得到账号密码: 反弹shell: exim4提权: Flag: DC-8靶场链接: https://www.five86.com/downloads/DC-8.zip 下载后解压会有一个DC-8.ova文件…

ARFoundation系列讲解 - 93 绘制圆

案例中使用的软件版本 Unity2023.1.20.f1c1ARFoundtaion 5.1.0Apple ARKit XR Plugin 5.1.0 Google ARCore XR Plugin 5.1.0技术分析 我们可以实时检测用户手指触摸的屏幕位置,从触摸位置投射一条射线(Raycast),再射线命中的目标位置创建一个点,放置一个圆,手指拖动来设置…

阿赵UE学习笔记——2、新建项目和项目设置

阿赵UE学习笔记目录 大家好,我是阿赵。继续来学习虚幻引擎的使用。这次介绍一下新建项目和项目设置。 一、新建项目 通过桌面快捷方式,或者EPIC Games Loader,启动虚幻引擎。 启动完成后,会打开项目管理的界面,可以看…

C11编写简易16位虚拟机

虚拟机 在计算领域,VM(虚拟机)是一个术语,指的是模拟/虚拟化计算机系统/架构的系统。 一般来说,虚拟机有两类: 系统虚拟机提供真实机器的完整替代品。 它们实现了足够的功能,允许操作系统在它…