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

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: 一般在mysql中,我们根据会存储json格式的文本内容,有的情况下,我们需要利用json的key去查询对应的value问题那么mysql支持对json格式数据的解析操作吗?当然是支持的事实上mysql5.7以上都已经支持json的操作,以及增加了json存储类型Mysql5.7版本以后新增的功能,Mysql提供了一个原生的Json类型,Json值将不再以字符串的形式存储,而是采用一种允许快速读取文本元素(document elements)的内部二进制(internal binary)格式。.

前言

一般在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

image.png

看不懂? 没关系


我们中文翻译下

image.png


既然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"}');

image.gif



image.png


编写sql查询


根据key精确匹配

# age为10的数据

select * from json_sql where info->'$.age' = '10';

image.png

根据key模糊查询


image.png


完整sql如下

image.png

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

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
16天前
|
存储 SQL 关系型数据库
MySQL 给查询结果增列并自定义列数据
MySQL 给查询结果增列并自定义列数据
126 2
|
16天前
|
JSON 数据格式
LangChain-20 Document Loader 文件加载 加载MD DOCX EXCEL PPT PDF HTML JSON 等多种文件格式 后续可通过FAISS向量化 增强检索
LangChain-20 Document Loader 文件加载 加载MD DOCX EXCEL PPT PDF HTML JSON 等多种文件格式 后续可通过FAISS向量化 增强检索
42 2
|
16天前
|
存储 SQL 关系型数据库
MySQL查询数据库锁表的SQL语句
MySQL查询数据库锁表的SQL语句
50 1
|
16天前
|
SQL 存储 关系型数据库
MySQL能否查询某张表的操作记录
MySQL能否查询某张表的操作记录
121 1
|
16天前
|
关系型数据库 MySQL Serverless
MySQL DATETIME 查询条件
MySQL DATETIME 查询条件
29 1
|
17天前
|
缓存 关系型数据库 MySQL
MySQL 满足条件函数中使用查询最大值函数
MySQL 满足条件函数中使用查询最大值函数
51 1
|
6天前
|
JSON API 数据格式
商品详情数据JSON格式示例参考(api接口)
JSON数据格式的商品详情数据通常包含商品的多个层级信息,以下是一个综合多个来源信息的JSON数据格式的商品详情数据示例参考:
|
15天前
|
机器学习/深度学习 JSON JavaScript
LangChain-21 Text Splitters 内容切分器 支持多种格式 HTML JSON md Code(JS/Py/TS/etc) 进行切分并输出 方便将数据进行结构化后检索
LangChain-21 Text Splitters 内容切分器 支持多种格式 HTML JSON md Code(JS/Py/TS/etc) 进行切分并输出 方便将数据进行结构化后检索
17 0
|
17天前
|
SQL 关系型数据库 MySQL
MySQL 查询某个字段含有字母数字的值
MySQL 查询某个字段含有字母数字的值
37 0
|
17天前
|
关系型数据库 MySQL 数据库
MySQL 查询结果求和详解
MySQL 查询结果求和详解
43 0