如何在pgAdmin中用替换的值更新jsonb列?(二)

上一篇提到怎么替换jsonb,链接如下:

如何在pgAdmin中用替换的值更新jsonb列?-CSDN博客

那么当jsonb嵌套jsonb应该怎么替换呢?像这样,类型依然是jsonb,只不过嵌套一层,JsonData:"{}",这就不得不提一下这种数据结构是怎么来的。

首先构造一个正常的jsonb,如下:

--jsonb_build_object函数就能够帮助构造一个Json对象
SELECT jsonb_build_object('name', 'John', 'age', 30, 'gender', 'male');

展开来看下里面怎么存的

第二步骤,我们嵌套一层Json

--此处将第一步骤构造的Json对象转化为text再被当作嵌套后的值
--jsonb_build_object('name', 'John', 'age', 30, 'gender', 'male')::text 
SELECT jsonb_build_object('JsonData',jsonb_build_object('name', 'John', 'age', 30, 'gender', 'male')::text);

再展开看下效果,可以看见第一步骤中的json已经变成text并且被加了转义符 \" 

至此,文章开头提到的嵌套Json我们就拿到了。

题外话,那么再嵌套一层会怎样呢?好的继续嵌套。

SELECT jsonb_build_object('JsonData',jsonb_build_object('JsonData',jsonb_build_object('name', 'John', 'age', 30, 'gender', 'male')::text)::text);

展开看效果:又多加了一层转义符

知道了嵌套Json是怎么来的以后,想写替换语句就容易了。

思路:构造一个一样的Json结构直接set进去就好了。

--先查一下看效果是否更改url成功
select "Id" as id, jsonb_build_object('JsonData', jsonb_set(("BuildInTemplate"::jsonb ->> 'JsonData')::jsonb, '{$template, url}', '"https://blog.csdn.net/CSDN_wcy?type=blog"' )::text) as data
from "Test_Template"
where "IHLFlag"=2 and "BuildInTemplate" is not null
;begin;
update "Test_Template"
set "BuildInTemplate" = jsonb_build_object('JsonData', jsonb_set(("BuildInTemplate"::jsonb ->> 'JsonData')::jsonb, '{$template, url}', '"https://blog.csdn.net/CSDN_wcy?type=blog"' )::text)
where "IHLFlag"=2 and "BuildInTemplate" is not null;-- commit;
rollback;

衍生的问题,既然可已嵌套Json,那么想不显示转义符的Json在pgAdmin中方便查阅又怎么做呢?

思路:我们知道嵌套相当于Jsonb被转成text存到value里,那么我们就按text格式查出来再转回Jsonb。既存jsonb - text,取text - jsonb。

--  ->>符号意思是按text取,->符号意思是按jsonb取
select "Id",("BuildInTemplate"->>'JsonData')::jsonb as "Data" from public."Test_Template"

看效果:

参考链接:

PostgreSQL 如何在PostgreSQL中解析JSON|极客笔记 (deepinout.com)

仅供学习参考,如有侵权联系我删除

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/296998.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GDPU 竞赛技能实践 天码行空6

📖 敌兵布阵 C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了。A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任务就是要监视这些工兵营地的活动情况。由于采取了某种先进的监测手段,所以每个工…

统计子矩阵(前缀和+双指针)

题目描述 给定一个 N M 的矩阵 A,请你统计有多少个子矩阵 (最小 1 1,最大 N M) 满足子矩阵中所有数的和不超过给定的整数 K? 输入格式 第一行包含三个整数 N, M 和 K. 之后 N 行每行包含 M 个整数,代表矩阵 A. 输出格式 一个整数…

MySQL InnoDB引擎

InnoDB的逻辑存储结构如下图所示: 存储结构 表空间 表空间是InnoDB存储引擎逻辑结构的最高层, 如果用户启用了参数 innodb_file_per_table(在8.0版本中默认开启) ,则每张表都会有一个表空间(xxx.ibd),一个…

MySQL 索引底层探索:为什么是B+树?

MySQL 索引底层探索:为什么是B树? 1. 由一个例子总结索引的特点2. 基于哈希表实现的哈希索引3. 高效的查找方式:二分查找4. 基于二分查找思想的二叉查找树5. 升级版的BST树:AVL 树6. 更加符合磁盘特征的B树7. 不断优化的B树&#…

Tailscale:随时随地远程和使用服务器

文章目录 Tailscale是什么?Tailscale能做什么?1、传输文件2、远程开发3、代理 Tailscale怎么用?Windows下安装OpenSSH在线安装离线安装连接SSH服务器 Reference相关阅读 彩蛋:Pycharm远程连接服务器并运行代码 Tailscale是什么&am…

【MySQL】数据库的基本操作

目录 一、数据库的库操作 二、数据库的表操作 一、数据库的库操作 数据库的创建 create database (if not exists) 库名 这里的if not exists 是一个判断用的,如果数据库存在,就不执行语句,如果数据库不存在,则执行该语句。 创建…

npm install node-sass报错

前言 在使用 node-sass 时,你可能会遇到安装 node-sass 时出现各种错误的情况。在本文中,我们将探讨一些常见的 node-sass 安装错误,以及如何解决它们。 无论你是初学者还是有经验的开发者,本文都将为你提供有用的信息和技巧&…

PHP在线加密系统网站源码

源码介绍 PHP在线加密系统网站源码,这个是sg的加密,免费可用(目前)并不会收费 源码说明:下载直接上传即可 下载地址 蓝奏云下载:https://wfr.lanzout.com/i6c331togiji

路由Vue-Router使用

Vue Router 是 Vue.js 的官方路由。它与 Vue.js 核心深度集成,让用 Vue.js 构建单页应用变得轻而易举。 介绍 | Vue Router (vuejs.org) 1. 安装 npm install vue-router4 查看安装好的vue-router 2. 添加路由 新建views文件夹用来存放所有的页面,在…

自动驾驶中各种坐标系辨析

坐标系辨析 0. 地球椭圆体1. 大地坐标系2. eci地心惯性坐标系3. 地心地固坐标系(ECEF坐标系,E系)4. 站心坐标系(ENU坐标系)5. UTM坐标系6. LTM坐标系7. IMU坐标系8. 代码部分8.1 LLA(大地坐标系坐标、经纬度海拔)坐标转LTM系(ENU系)下的三维笛卡尔坐标8.2 LLA坐标转…

Java SE入门及基础(47)

集合框架介绍 集合 来自官方的说明 1. 集合与集合框架 A collection — sometimes called a container — is simply an object that groups multiple elements into a single unit. Collections are used to store, retrieve, manipulate, and communicate aggregate data…

【leetcode C++】滑动窗口

1. LCR 008. 长度最小的子数组 题目 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl1, ..., numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。 题目…

Django模板层——三种自定义模板simple_tag、inclusion_tag、filter的用法

目录 1. 前言 2. 前置操作 3. simple_tag 3.1 注意点 4. inclusion_tag 5. filter 6. 结尾 1. 前言 在前后端不分离的模式中,Django的模板语法尤为重要,我们可以动态传入变量,并在前端HTML中进行展示。在变量展示时,会有一…

本地运行github上下载的项目--接Git入门篇

1.了解项目 这是一个基于Spring Boot 和 Mybatis Plus 构建的Java项目,很经典的外卖项目,参考b站的黑马瑞吉外卖。 2.构建项目 SpringBoot项目,首先下载一些常见的项目要求的组件。然后配置如下: 看README,在阅读该…

【数据结构】初识数据结构与复杂度总结

前言 C语言这块算是总结完了,那从本篇开始就是步入一个新的大章——数据结构,这篇我们先来认识一下数据结构有关知识,以及复杂度的相关知识 个人主页:小张同学zkf 若有问题 评论区见 感兴趣就关注一下吧 目录 1.什么是数据结构 2.…

即刻体验 | 使用 Flutter 3.19 更高效地开发

我们已隆重推出全新的 Flutter 版本——Flutter 3.19。此版本引入了专为 Gemini 设计的新 Dart SDK、一个能让开发者对 Widget 动画实现精细化控制的全新 Widget,Impeller 更新带来的渲染性能提升、有助于实现深层链接的工具和对 Windows Arm64 的支持,以…

储能系统--液冷充电枪

前言 随着新能源汽车在市场中的占比不断攀升,续航里程和充电时间成为了制约新能源汽车发展的两个关键因素, 而随着续航里程的增加,电池容量也会相应的增加,充电时间也会加长,大功率快充技术逐渐成为解决续航瓶颈的关键…

golang语言系列:Web框架+路由 之 Echo

云原生学习路线导航页(持续更新中) 本文是golang语言系列文章,本篇主要对 Echo 框架 的基本使用方法 进行学习 1.Echo是什么 Go 有众多Web框架,Echo 是其中的一个,官网介绍Echo有高性能、可扩展性、极简的特点。使用E…

C++的并发世界(五)——线程状态切换

0.线程状态 初始化:该线程正在被创建; 就绪:该线程在列表中就绪,等待CPU调度; 运行:该线程正在运行; 阻塞:该线程被阻塞挂机,Blocked状态包括:pend&#xff…

vulnhub靶机: DC-9

dc-9靶机下载 将靶机设置为NAT模式,本次实验使用的内网网段为192.168.198.0/24,kali的ip为192.168.198.172 信息搜集 ip主机扫描: nmap -sP 192.168.198.0/24 确定靶机ip为192.168.198.171 主机端口扫描: nmap -T4 -A -v 192…