大家好,在开发的过程中由于业务复杂多变,普通的字符串格式满足不了业务开发需求,可能会用到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里面的[],"",这些字符去掉,或转化为空字符串,然后列转行

SELECTv_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
FROMv_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)这个函数,查询自己字段函数类型

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

  1. 【转载】salesforce 零基础开发入门学习(四)多表关联下的SOQL以及表字段Data type详解...

    salesforce 零基础开发入门学习(四)多表关联下的SOQL以及表字段Data type详解 建立好的数据表在数据库中查看有很多方式,本人目前采用以下两种方式查看数据表. 1.采用schema ...

  2. SQL全方位攻略:5. SQL “方言”大比拼:Oracle、MySQL、PostgreSQL限制检索行数语法详解(分页查询)

    系列文章目录 SQL全方位攻略:1.数据库介绍 SQL全方位攻略:2.SQL介绍 SQL全方位攻略:3.SQL标准 SQL全方位攻略:4. 标准SQL和SQL"方言" 文章目录 系 ...

  3. xss编码绕过详解(更像是在介绍实体编码和JS编码的解析过程)

    xss编码绕过详解(更像是在介绍实体编码和JS编码的解析过程) 注:本文通过研究各种情况下实体编码和JS编码是否生效,进而总结了哪些情况下能够进行编码后,javascript代码依然能够正常执行. 解 ...

  4. php字段验证规则,详解ThinkPHP中自动验证及验证规则

    本篇文章详细介绍了thinkphp中自动验证及验证规则的方法,希望对学习thinkphp的朋友有帮助! 详解ThinkPHP中自动验证及验证规则 ThinkPHP 内置了数据对象的自动验证功能来完成模 ...

  5. 使用order by排序判断返回结果的列数,order by排序判断字段数原理详解

    「作者主页」:士别三日wyx order by排序猜解列数原理详解 一.order by的两种使用方式 1)按照字段名排序 2)按照索引排序 二.order by怎么判断字段数? 1)正常的排序 3) ...

  6. JDBC详解(四):操作BLOB类型字段(超详解)

    JDBC详解(四):操作BLOB类型字段 前言 一.MySQL BLOB类型 二.向数据表中插入大数据类型 三.修改数据表中的Blob类型字段 四.从数据表中读取大数据类型 前言 本博主将用CSDN记 ...

  7. mysql数据库字段变形_详解如何利用amoeba(变形虫)实现mysql数据库读写分离

    摘要:这篇MySQL栏目下的"详解如何利用amoeba(变形虫)实现mysql数据库读写分离",介绍的技术点是"MySQL数据库.数据库读写分离.amoeba.MySQL ...

  8. 在Mysql中count(*)、count(1)与count(字段/列名)的详解—聚合函数count

    目录 一.简单区别 二.效率比较 三.举例 3.1创建表 3.1.1利用count(*)进行统计所有行的数目 3.1.2利用count(1)进行统计所有行的数目 3.1.3利用count(字段/列名) ...

  9. 数据库字段属性的详解

    好比C++中,定义int类型需要多少字节,定义double类型需要多少字节一样,MySQL对表每个列中的数据也会实行严格控制,这是数据驱动应用程序成功的关键.M前言 好比C++中,定义int类型需要多 ...

最新文章

  1. 攀枝花市大数据中心落户东区
  2. C++找出一个二维数组中的鞍点,即该位置上的元素在该行上最大,在该列上最小(也可能没有鞍点)
  3. python中单行注释_Python中的单行、多行、中文注释方法
  4. git merge 与 git rebase的区别
  5. VDI序曲十四 使用 RemoteFX 安装和配置 USB 重定向
  6. php为什么查询语句加上order by就显示不出来,sql会查出结果 php页面偶尔显示空白 没有从sql得到结果...
  7. 四川教育考试网全国计算机,四川教育考试院
  8. Java 自定义HashSet
  9. Dxg——立创EDA [LCEDA] 开发笔记整理分类合集【所有的相关记录,都整理在此】
  10. 2019国人工资报告:月薪过万是个槛?大部分网友表示月薪不足5K!
  11. Python进阶读书笔记之(四) set集合
  12. Apache+tomcat实现应用服务器集群
  13. oracle自动加一天,如何将Oracle 当前日期加一天、一分钟
  14. 纯CSS3制作逼真的iphone 6手机模型
  15. 关于数加服装ERP软件/系统的功能模块与应用的介绍
  16. 连接redis服务器提示:Redis Client On Error Error connect ECONNREFUSED 127.0.0.16380 Config right
  17. 浅谈文化创意产业与创意城市 | 上海城市规划
  18. 物联网概论(IoT)_Chp10 智慧地球与物联网应用/M2M/共享单车/无人驾驶
  19. 提升策划能力提升的法宝
  20. 【链环科技】智能硬件APP开发——通过硬件对接,实现软件与硬件设备的完美结合

热门文章

  1. 读懂一个 demo,入门机器学习
  2. SAP 标准成本核算重要环节详解
  3. LeetCode二叉树系列——236.二叉树的最近公共祖先
  4. 基于哈夫曼算法的文件压缩软件
  5. 爱尔兰圣三一大学计算机专业硕士,圣三一大学两大热门硕士专业
  6. 使用 Windows Virtual PC 创建一个虚拟机
  7. flask 自动换背景,使用python获取bing每日壁纸当作登陆背景图片
  8. Typora的读法与基本使用
  9. 扁平化设计配色参考网站:FlatUIColors
  10. 《代码之殇》(原书第2版)——第2章 过程改进,没有灵丹妙药 2002年9月2日...