大家好,在开发的过程中由于业务复杂多变,普通的字符串格式满足不了业务开发需求,可能会用到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. Lua 性能相关笔记
  2. MAP文件和调试(VC)(从崩溃地址找出错源码位置)
  3. linux不用命令开启ssh,不用密码也能ssh登陆Linux?
  4. I.MX6 Linux Serial Baud Rate hacking
  5. html input自动获取光标位置,HTML contenteditable 标签里怎样获取光标像素位置?
  6. Pthreads线程的基本常识
  7. java直_java直连数据库小结
  8. pbrt1 Introduction
  9. 【IoT】产品设计:贴片电子电容封装类型:0202封装、0402封装、0603封装、0805封装、1206封装、1210封装、1812封装、2010封装、2512封装
  10. 如何用ESP8266 向手机App 发送信息
  11. Android安卓原生实现微信登陆
  12. 泛微OA流程中调用SAP接口
  13. typecho添加html5视频播放器,Typecho音乐播放器插件AudioPlayer1.2.6更新
  14. U盘重装系统win7_U盘安装win7教程
  15. SQL server登录密码重置(忘记密码)
  16. 微信小程序存储、获取封装
  17. SOHO办公遭IBM叫停,为什么说它是创业大忌?
  18. 王卫,零售风口练习生
  19. JavaSE进阶 第七章 常用类 (一) String
  20. 飞行性能计算及操稳特性分析

热门文章

  1. 关于实仓与虚仓和调拨单和虚仓调拨单的区别
  2. C语言整型转字符串类型
  3. 直播视频app源码,保存图片到系统相册
  4. spring框架两大核心
  5. 用PyTorch对Leela Zero进行神经网络训练
  6. 昆仑通态触摸屏与2台台达变频器及2台仪表通讯控制
  7. 微信小程序制作楼栋鸟瞰分布图
  8. 五笔该用怎样的思路去开发
  9. OCP-V13-018
  10. autotools简介