mysql中根据json格式进行查询等操作

Posted 小花皮猪

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql中根据json格式进行查询等操作相关的知识,希望对你有一定的参考价值。

前言

一般在mysql中,我们根据会存储json格式的文本内容,有的情况下,我们需要利用json的key去查询对应的value

问题

那么mysql支持对json格式数据的解析操作吗?

当然是支持的

事实上mysql5.7以上都已经支持json的操作,以及增加了json存储类型

Mysql5.7版本以后新增的功能,Mysql提供了一个原生的Json类型,Json值将不再以字符串的形式存储,而是采用一种允许快速读取文本元素(document elements)的内部二进制(internal binary)格式。在Json列插入或者更新的时候将会自动验证Json文本,未通过验证的文本将产生一个错误信息。Json文本采用标准的创建方式,可以使用大多数的比较操作符进行比较操作,例如:=, <, <=, >, >=, <>, != 和 <=>。
 

这是mysql官方文档对json的使用说明

https://dev.mysql.com/doc/refman/5.7/en/json-search-functions.html

 

看不懂的话我们可以翻译成中文

 

既然mysql支持对json的解析,那么我们就实际操作下

创建数据库和表并插入测试数据

首先保证我们有库有表有数据,直接运行下面sql即可

我这里简单创建个表,就加了一点数据

create database test;
# 使用数据库
use test;
# 创建表
CREATE TABLE json_sql2  (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `info` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT   NULL COMMENT 'json文本',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
# 插入测试数据
insert into json_sql(info) values('"name":"张三","age":"10"');
insert into json_sql(info) values('"name":"王五","age":"20"');
insert into json_sql(info) values('"name":"找六","age":"30"');

 

编写sql查询

根据key精确匹配

# age为10的数据
select * from json_sql where info->'$.age' = '10';

根据key精确匹配

 根据key模糊查询

以上这些就是简单的操作,后面实战遇到会继续补充

目录

前言

问题

创建数据库和表并插入测试数据

编写sql查询


以上是关于mysql中根据json格式进行查询等操作的主要内容,如果未能解决你的问题,请参考以下文章

mysql中 怎样根据姓名集合查询id集合?

mysql数据库中某个字段存的是json数据,如何对json数据中的数据进行操作?

05: MySQL高级查询

python怎么从一堆数据中取数

Mysql json类型

怎样在java中查询mysql得到如下的json格式的结果