当前位置: 首页 > ops >正文

记一次:mysql的json及json数组使用组合使用

前言:mysql中的某个字段为json,json中含有json数组,但笔者想从数组中取其中的一个符合条件的数值。

方案一、将数据取到java中解析遍历后判断符合条件

这个方案笔者实现了,但感觉既然我们使用了库,不太想将数据拿到代码中解析操作。仔细想想能否在mysql库中能否实现呢?

方案二、mysql库中解析json和json数组

话不多说,先将代码贴出来,敏感部分已做修改,这里只显示结构

SELECT* 
FROM(SELECT DISTINCTlide.id,lide.event_time,lide.event_values ->> '$.DataTime' AS happen_time,lide.event_values ->> '$.IndicatorReportingArray' AS daySerialNumber,lide.event_values ->> '$.MearsureName' AS dataSerialNumber FROMa_event lide WHERElide.device_name = '123456' AND lide.identifier = 'aaaa' AND lide.event_values LIKE concat( '%', 'hhh', '%' ) AND ( lide.event_values LIKE concat( '%', 'cc', '%' ) OR lide.event_values LIKE concat( '%', 'dd', '%' ) ) ORDER BYhappen_time DESC ) AS my_table,JSON_TABLE ( my_table.daySerialNumber, "$[*]" COLUMNS ( WaterQualityTestProject VARCHAR ( 255 ) PATH '$.aa', event_values VARCHAR ( 255 ) PATH '$.bb' ) ) AS jt 
WHEREjt.WaterQualityTestProject = 'hhh' LIMIT 10 ;

解释:

1、lide.event_values ->> '$.MearsureName' AS dataSerialNumber

其中->>是mysqljson转换的关键字,将event_values字段的json数据提取MearsureName

2、JSON_TABLE 关键字使用

将查询出来的临时表将json数组变为一个表结构

3、my_table.daySerialNumber, 
"$[*]" COLUMNS ( WaterQualityTestProject VARCHAR ( 255 ) PATH '$.aa', 
event_values VARCHAR ( 255 ) PATH '$.bb' ) 
) AS jt 

将daySerialNumber字典的json数组按创建表结构一样解析出数组表

最后使用where条件判断,就能过滤出json数组表中想要的内容啦。美滋滋~

http://www.xdnf.cn/news/20264.html

相关文章:

  • 【基础-单选】关于UIAbility的启动模式,下列说法错误的是:
  • Redis 事务与 Lua 脚本:原子操作实战指南
  • LeetCode 2461.长度为K子数组中的最大和
  • 【FastDDS】 Entity Policy 之 标准Qos策略
  • OpenHarmony之USB Manager 架构深度解析
  • 【视网膜分割】AFMIP-Net:一种新型的自适应特征调制和隐式提示网络
  • AI、人工智能础: 实体命名!
  • 郭平《常变与长青》读书笔记(第一章)
  • QT之实现点击按钮启动另一个桌面应用程序
  • 【开题答辩全过程】以 停车场管理系统的设计与实现为例,包含答辩的问题和答案
  • 点晴模切ERP与MES系统整合:模切工厂数字化转型关键
  • 内网后渗透攻击--linux系统(横向移动)
  • Python趣味入门:打印与计算初体验
  • 垃圾收集器分类
  • 「数据获取」《中国电力统计年鉴》(1993-2024)(含中国电力年鉴)
  • 分布式数据库的历史演变与核心原理
  • SpringBoot配置文件
  • 【CSP-S】数据结构 ST 表详解
  • 植物大战僵尸融合版安装包,下载安装教程
  • PCDN工作原理的详细步骤
  • Netty从0到1系列之EventLoopGroup
  • Kafka面试精讲 Day 10:事务机制与幂等性保证
  • CUDA默认流的同步行为
  • 项目升级--kafka消息队列的应用
  • 状压 dp --- 数据范围小
  • 雪球科技Java开发工程师笔试题
  • happen-before原则
  • WSL Ubuntu Docker 代理自动配置教程
  • LeetCode 139. 单词拆分 - 动态规划解法详解
  • 【软考架构】第二章 计算机系统基础知识:计算机网络