小工具      在线工具  汉语词典  css  js  c++  java

Mysql JSON_EXTRACT 获取JSON数据

Java,mysql,json,数据库 额外说明

收录于:43天前

1、mysql数据库中的ext存储json字段,如下:

CREATE TABLE `volume` (
  `volumeId` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `ext` json DEFAULT NULL COMMENT '扩展字段',
  PRIMARY KEY (`volumeId`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='量表'

具体存储的值是一个嵌套在数组中的json对象,数组中包含对象,如下:

2.我们的目标是获取9月份的monthVolume总和以及9月份的dayVolume总和?

关于JSON_EXTRACT获取JSON字符串的语法请参考百度。这里我直接列出sql语句,如下:

SELECT
			JSON_EXTRACT(`ext` , '$.monthList') AS fieldModels , // 先获取这个月份的数组
			JSON_EXTRACT(
				JSON_EXTRACT(`ext` , '$.monthList') ,
				"$[8].monthVolume"      // 9月的monthVolume(下表从0开始)
			) AS monthVol ,   
			JSON_EXTRACT(
				JSON_EXTRACT(`ext` , '$.monthList') ,
				"$[8].dayVolume"    // 9月的dayVolume(下表从0开始)
			) AS dayVol
		FROM
			`volume`

通过上面的sql语句,得到了monthVol和dayVol的数据,如下图所示:

得到这两列数据后,下一步就简单了,将它们求和即可。

SELECT
	sum(monthVol) ,
	sum(dayVol)
FROM
	(
		SELECT
			JSON_EXTRACT(`ext` , '$.monthList') AS fieldModels ,
			JSON_EXTRACT(
				JSON_EXTRACT(`ext` , '$.monthList') ,
				"$[8].monthVolume"
			) AS monthVol ,
			JSON_EXTRACT(
				JSON_EXTRACT(`ext` , '$.monthList') ,
				"$[8].dayVolume"
			) AS dayVol
		FROM
			`volume`
		WHERE
			years = 2021
		AND isDelete = 0
	) list

3、对下面Json字符串中的specification字段进行模糊查询,“$[*].specification”数组中任意包含specification的字段

测试数据如下:

{"overLoad": 0, "goodsList": [{"goodsType": "方便面", "规格": "一袋001"}, {"goodsType": "方便面", "规格": "一袋捆” }]}

{"overLoad": 0, "goodsList": [{"goodsType": "方便面", "规格": "垃圾袋00sss222s"}, {"goodsType": "方便面袋", "规格": "一捆“ }]}

查询语句如下:

select extJson from `Order` where
JSON_EXTRACT(JSON_EXTRACT(`extJson`, '$.goodsList'), "$[*].specification") LIKE '%垃圾袋%' 

. . .

相关推荐

额外说明

HTML 编码、HTML 解码

Java中可以使用 escapeHtml4编码,unescapeHtml4解码。 StringEscapeUtils.escapeHtml4();//HTML编码 StringEscapeUtils.unescapeHtml4();//HTML解码 完整

额外说明

Tiptop,一款很酷又好用的命令行系统监控工具,跨平台

安装:pip install tiptop 运行:tiptop

额外说明

常用颜色英文名称

cyan:青色        indigo blue:蓝色 green:绿色 purple:紫色 yellow:黄色 red:红色 pink:粉红色 palegoldenrod :苍麒麟色 palegreen :苍绿色 paleturquoise: 苍绿

额外说明

[MySQL]解决字符集编码问题

文章目录 前言 方法1:在创建数据库时,指定字符集 方法2: 更改MySQL的配置文件 前言 MySQL的默认编码方式是 拉丁文,如果想要设置一些汉字的数据.可能会报错.分享一下我解决这个问题时的方法.1. 在创建数据库时,指定字符集 2.更改MySQL

额外说明

Vue学习系列06-Vue-CLI3搭建

目录 前言 1.Vue CLI搭建?  2.创建runtimecompiler/runtimeonly属性项目区别 前言 本篇文章内容适宜后端人员学习vue。因为不会具体详解webpack,node.js的搭建 提示:以下是本篇文章正文内容,下面案例可供

额外说明

mysql的union和union all

1. sql中 union 和 union all 的用法 如果我们需要将两个 select 语句的结果作为一个整体显示出来,我们就需要用到 union 或者 union all 关键字。union (或称为联合)的作用是将多个结果合并在一起显示出来。

额外说明

Direct3D 12——学习——初始化D3D——6——创建命令列表CreateCommandList

ID3D12GraphicsCommandList接口封装了一系列图形渲染命令,继承ID3D12CommandList接口。 ThrowIfFailed(md3dDevice->CreateCommandList( 0, D3D12_COMMAN

额外说明

面经:阿里二面自我剖析---Java岗(50分钟)

一面链接:面经:阿里一面自我剖析—Java岗(40分钟) 三面链接:面经:阿里三、四面及HR面自我剖析—Java岗(80分钟、30分钟、15分钟) 二面是8月28号面的,有些激动。这次面试是依托项目来考察我的技术点,主要偏优化方面和底层技术原理方向。下面

额外说明

【Rust 基础篇】Rust 引用循环:解析和避免

导言 在 Rust 中,引用循环是指两个或多个对象之间相互引用,形成一个循环链。这种情况下,对象之间的引用计数永远不会变为零,导致内存泄漏和资源泄漏。本篇博客将详细介绍 Rust 引用循环的概念、问题和解决方案,并通过代码示例演示如何避免引用循环。 引用

额外说明

mysql常见错误

mysql也符合SQL语句的格式,所以,我们对其进行不当的操作时,mysql就会报出一系列的错误。每个错误对应着一个错误编码,当出现了错误别紧张,我们先看错误写的是什么意思,然后才对症下药地解决掉。 1062错误 解决方案:我将tag表的tname字段设

ads via 小工具