PostgreSQL 关于Jsonb字段的处理详解(长期更)

2023-11-19

大家好,在开发的过程中由于业务复杂多变,普通的字符串格式满足不了业务开发需求,可能会用到jsonb字段去处理格外逻辑的业务。

话不多说,

1.一般jsonb存储的逻辑是,一个字段里面存储多条数据,以id为存储对象举例,该jsonb字段中存储的多个对象的id,如图所展示

2.其次就是jsonb字段里面存储的是以k,v键值对形式的数据。

根据这两种情况我们如何对其数据信息筛选或者处理呢,首先是根据条件2的情况去进行提取需要的数据

SELECT base_message_info ->>'dialog' FROM "base_message"

//解释:查询 该字段中k为 'dialog'对应v 的值 在后面的表中

结果:

其次根据条件1的情况去提取需要的数据,

敲重点,假设一个业务,我们需要将jsonb里面存储的id进行连表查询,且里面存储的数据是需要去掉括号以及字符串的,并且需要列转行,那需要怎么办呢?

笔者这里提供一种解决方式

1.将数据全部先转成字符串的数据类型,因为连表查询的数据类型要一致

( base_authority_condition_button.sys_role_ids ) :: CHARACTER VARYING AS sys_role_ids 

2.其次就是将jsonb里面的[],"",这些字符去掉,或转化为空字符串,然后列转行

SELECT
	v_attribute_permission.ID,
	v_attribute_permission.NAME,
	regexp_split_to_table(
		REPLACE (
			REPLACE ( REPLACE ( ( v_attribute_permission.sys_role_ids ) :: TEXT, '[' :: TEXT, '' :: TEXT ), '"' :: TEXT, '' :: TEXT ),
			']' :: TEXT,
			'' :: TEXT 
		),
		'\,' :: TEXT 
	) AS sys_role_ids 
FROM
	v_attribute_permission 
WHERE
	( ( v_attribute_permission.del_flag ) :: TEXT = '1' :: TEXT )

//解释一下列传行笔者用的函数是 regexp_split_to_table,就是将jonsb里面的数据根据特定的字符串进行转行
//代替用的是replace,就是将数据里面的所有指定的数据中的字符串转化为期待的字符

3,将字符串转化为jsonb格式,且行转列用 jsonb_object_agg 这个函数

4,如果不确定转换之后的格式是什么可以用到 pg_typeof(your_variable)这个函数,查询自己字段函数类型

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PostgreSQL 关于Jsonb字段的处理详解(长期更) 的相关文章

  • Postgres:显示继承的字段

    我应该实现什么查询来获取继承的列 读过this http www alberton info postgresql meta info html综合帖子没有找到解决办法 如果我理解正确的话 您想知道作为表之间继承的一部分的列的名称 SELE
  • 如何在连接到 Heroku PostgreSQL 的 Flask 应用程序上处理更多并发用户?

    Heroku 上的 Flask API 有许多端点 它们在将 json 化结果返回给客户端之前在我的 Heroku PostgreSQL 数据库上运行查询 我当前的计划是 Hobby Basic 层 因此数据库最多只能处理 20 个连接 如
  • 如何重命名 MySQL 数据库(更改架构名称)?

    如何快速重命名 MySQL 数据库 更改其架构名称 通常我只是转储数据库并使用新名称重新导入它 对于非常大的数据库来说 这不是一个选项 显然RENAME DATABASE SCHEMA db name TO new db name 做了坏事
  • 如何创建不返回任何内容的函数

    我想写一个函数pl pgsql 我在用着Postgres 企业管理器 v3并使用 shell 来创建一个函数 但在 shell 中我必须定义返回类型 如果我不定义返回类型 我将无法创建函数 如何创建一个不返回结果的函数 即创建一个新表的函数
  • 如何在文件系统中存储图像

    目前 我已将图像 最大 6MB 作为 BLOB 存储在 InnoDB 表中 随着数据大小的增长 夜间备份变得越来越慢 阻碍了正常性能 因此 二进制数据需要进入文件系统 指向文件的指针将保存在数据库中 数据具有树状关系 main site u
  • 如何引用下一行的数据?

    我正在 PostgreSQL 9 2 中编写一个函数 对于股票价格和日期的表 我想计算每个条目较前一天的百分比变化 对于最早一天的数据 不会有前一天 因此该条目可以简单地为 Nil 我知道WITH声明可能不应该高于IF陈述 到目前为止 这就
  • Android中不同线程的数据库访问

    我有一个在 AsyncTasks 中从互联网下载数据的服务 它解析数据并将其存储在数据库中 该服务持续运行 当服务写入数据库时 活动会尝试从数据库中读取更改 我有一个数据库助手 有多种写入和读取方法 这会导致问题吗 可能尝试从两个不同的线程
  • 本地 Postgres 实例和 Azure Cloud Postgres 实例之间的实时同步

    我需要在本地 postgresql 实例与云 postgresql 实例之间设置实时同步过程 请让我知道我可以通过哪些选项来实现它 我是否必须使用任何特定工具或者可以通过复制进行管理 请指教 使用 PgPool http www pgpoo
  • postgreSQL 在 WAMP 上的集成

    我刚刚在 Windows 7 上安装了 postgreSQL 我正在尝试将 postgreSQL 与 WAMP 服务器集成 为此 我在 httpd conf 和 php ini 文件中进行了以下更改 1个加载模块c path to libp
  • sqlite3从打印数据中删除括号

    我创建了一个脚本 用于查找数据库第一行中的最后一个值 import sqlite3 global SerialNum conn sqlite3 connect MyFirstDB db conn text factory str c con
  • 如何存储没有年份部分的生日?

    类似问题 Postgres 生日选择 https stackoverflow com questions 6913719 postgres birthdays selection 我们正在设计一项新功能 我们将存储人们生日的月份和日期部分
  • 插入具有多个值的外键

    我想知道 是否有可能创建一个表 其中我有一个接受外键但同一行可能有多个值的表 例如 Employee id name skillid Skill Skillid skillname 这里 Employee 的一个例子可以是 Employee
  • postgresql 登录到另一个表时发生冲突

    我正在使用 PostgreSQL 9 5 并尝试使用批量插入每天插入数百万行 INSERT INTO tours as cst adults country id price VALUES 3 129 80 2 119 120 on con
  • 如何在Django项目中使用PostgreSQL的存储过程或函数

    我正在开发一个 Django 项目 我决定在 PostgreSQL 中编写逻辑代码 而不是用 Python 编写 因此 我在 PostgreSQL 中创建了一个存储过程 例如 存储过程如下所示 create or replace proce
  • 有哪些可用选项可以识别和删除 Postgres 中的无效对象(例如:损坏的索引)

    有哪些可用选项可以识别和删除 Postgres 中的无效对象 如果您指的是检测 无效 创建不良 索引 显然 Postgres 在尝试创建索引时可能会 失败 然后查询规划器将不会使用它们 尽管它们存在于您的系统中 此查询将检测 失败 索引 h
  • 什么是“数据库实体”以及哪些类型的 DBMS 项目被视为实体? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Django 模型:默认日期时间未转换为 SQL CURRENT_TIMESTAMP

    我正在使用 Django 模型创建 PostgreSQL DB 我有一个 DateTimeField 我想将当前时间戳设置为默认值 我知道有多个消息来源建议如何做到这一点 但是 当我在 Django 之外检查数据库时 默认时间戳不会显示 我
  • 表与多个表具有一对一的关系

    1 一个表可以和多个表建立一对一的关系吗 为了更清楚地说明 如果我想做插入 第一个表将受到影响并且 只有一张其他表会受到影响 2 如果是这样 主键将如何 3 另外 如果我想检索多条记录 查询会是什么样子 从这些表中 谢谢 一个表可以和多个表
  • Django 独特的不工作

    我在从查询中过滤掉重复项时遇到问题 我正在使用 Django 1 4 和 Postgres 8 4 13 我在我的模型对象上使用这个查询 它是一个 jquery 自动完成 term request GET get term field re
  • MySQL 概念:会话与连接

    我对 MySQL 的概念有点困惑 会话与连接 当谈论连接到 MySQL 时 我们使用连接术语 连接池等 然而在 MySQL 在线文档中 http dev mysql com doc refman 4 1 en server system v

随机推荐

  • VUE中用原生JS实现触底加载数据

    VUE中用原生JS实现触底加载数据 在vue开发过程中使用第三方组件是不可避免的 但是第三方样式的css样式属实头痛 所以我选择原生JS的写法完成了触底加载 1 定义data page 1 页数 limit 10 每页数据条数 flag t
  • 单项选择题标准化考试系统

    单项选择题标准化考试系统 学校将大一上学期期末的c语言课程设计放进下学期开学 我选取的c课程设计题目是 单项选择题标准化考试系统 参考了csdn一些大佬的文章 终于做出来了 接下来 我将与大家一起浏览该系统 系统还有很多不足之处 欢迎提建议
  • 向顺序表插入新元素且不破坏其顺序性的高效率算法

    向顺序表L插入新元素x时可以由最后一个元素开始遍历 在遍历的同时进行移位赋值操作 如当遍历到的元素L elem i 比x大时 将L elem i 后移在下个元素的位置 而其所在位置则由x占有 当遍历到的元素L elem i 比x小时 则跳出
  • VS 2008配置Winpcap环境

    写在前面的话 这篇博客主要是写给小白看的 因为自己也是一个小白 之前从没有接触过网络嗅探器这些东西 如果说基础的话就是学习过计算机网络 对于计算机网络有一点点了解 再就是对于编程语言基础语法还算熟悉吧 这学期选修了网络攻击与防范这门课程 老
  • 视觉SLAM14讲笔记-第7讲-视觉里程计1

    图像特征点 特征点由关键点和描述子两部分组成 我们说的特征点具有旋转不变性 都是指的是特征点的描述子具有旋转不变性 而描述子指的是一个点周围的特征 一般由一个向量组成 描述一个点附近的特征 比如45度方向是亮的 135度方向是暗的等 比较著
  • 【WIN】【C++】查询文件信息(公司、版本、版权、描述、厂商等)

    使用C 提供的一个查询文件信息的接口 实现接口为 QueryValue fileInfo h class FileInfoUtils public static bool GetFileDescription const std wstri
  • mysql 免安装重装_mysql 卸载 重装 免安装版

    今天下午一下午都在安装mysql 首先说 卸载 1 如果控制面板里有mysql sever 先卸载 2 把安装的文件都删掉 3 regedit exe注册表中的三个地方的MySQl文件夹删掉 在cmd中输入regedit就找到注册表了 4
  • linux下C语言中的flock函数用法

    http blog csdn net lin fs article details 7804494 表头文件 include
  • 感知机(perceptron)代码实现

    书面内容参考 统计学习方法 李航 感知机 perceptron 是二分类的线性模型 旨在求出将训练数据进行线性划分的分离超平面 感知机模型 假设输入空间 特征空间 是x Rn 输出空间是输入x x表示实例的特征向量 对应于输入空间 特征空间
  • cp: cannot stat '/usr/local/bin/node': Too many levels of symbolic links

    升级nodejs 出现这个问题 ln failed to create symbolic link node File exists cp cannot stat usr local bin node Too many levels of
  • 低代码和专业开发云 开发平台 3.4.7 全新版本框架源码 旗舰版

    低代码开发云 高效全栈开发 跨端App开发 自由发布 灵活部署 提供开发 测试 部署 运维的一体化支持 真正低代码 高效率的DevOps开发运维一体化平台 低代码PaaS平台 企业云架构的关键层 真正提升企业应用的架构 开发 运维和治理 低
  • 初识Node.js-安装

    简介 node js其实就是js的运行环境 对于js的运行环境来说 1 前端一般指浏览器 比如谷歌浏览器提供了V8 js解析器 2 服务器段指的是Node js 1 区分LTS版本和Current版本的不同 https nodejs org
  • 报错EL1007E: Property or field ‘xxxxx’ cannot be found on null原因竟是这

    报错EL1007E Property or field xxxxx cannot be found on null 是什么原因 有时我们发现Springboot项目前端的 thymleaf 会报这样的错 EL1007E Property o
  • 设计模式 -- 工厂模式(Factory Pattern)

    简单工厂模式 Simple Factory Pattern 根据传入的参数决定实例化哪个对象 优点 不直接在客户端创建具体产品的实例 降低了耦合性 缺点 违反了开闭原则 对扩展开放 对修改关闭 不容易形成高内聚松耦合结构 每当我们增加一种产
  • 10个程序员可以接私活的平台和一些建议!

    来源 http mrw so 5isQLi 什么样的私活不能接 1 没有第三方担保的个人对个人的尽量不要接 双方都没保障 出了问题很大的可能撕破脸皮不了了之 2 一上来就直接说给我开发一个什么软件 不说具体需求 没有需求文档的都不靠谱 这样
  • zotero如何用markdown记笔记

    1 去下载 Releases adam p markdown here GitHub 拖拽到 2 ctrl alt M对笔记进行渲染
  • 【华为OD机试真题2023B卷 JAVA&JS】字符串加密

    华为OD2023 B卷 机试题库全覆盖 刷题指南点这里 字符串加密 时间限制 2秒 内存限制 65536K 语言限制 不限 题目描述 给你一串未加密的字符串str 通过对字符串的每一个字母进行改变来实现加密 加密方式是在每一个字母str i
  • Altium Designer覆铜后变为绿色是怎么回事?

    最近在做一个小板子 但是覆完铜后也把网络设置为GND 但是板子变绿色了 之前没有碰到过 也查过想过资料说是规则设置有问题 找了半天也没有发现规则相关问题 最后终于找到了解决方法 我把步骤写在下面 出现的问题如图所示 不知道你们有没有碰到这样
  • wx.config的时候总是报错63002是什么原因,配置时总是 invalid signature

    真的是真的是 我都弄的崩溃了差点 卡了三天的问题 各种留言各种找人还是不行 为了不再让各位体验那种感觉 zkhh666我的wx 首先说 我用的hbuilderx的uni做的 使用了推荐的插件jweixin module ps 我的问题是ur
  • PostgreSQL 关于Jsonb字段的处理详解(长期更)

    大家好 在开发的过程中由于业务复杂多变 普通的字符串格式满足不了业务开发需求 可能会用到jsonb字段去处理格外逻辑的业务 话不多说 1 一般jsonb存储的逻辑是 一个字段里面存储多条数据 以id为存储对象举例 该jsonb字段中存储的多