MySQL 中使用 JSON 格式存储数据能够更好地应对某些应用场景,例如 schema 不稳定、需要存储一些非结构化数据等。本文将详细讲解如何在 MySQL 中进行 JSON 格式数据的查询操作。
环境准备
在进行 JSON 格式数据查询操作前,我们需要先检查 MySQL 的版本,确保其支持 JSON 格式数据操作。MySQL5.7及以上都已经支持 JSON 数据类型,如果版本低于5.7需要先升级MySQL。同时,我们还需要安装 MySQL 的 JSON 插件,以便支持 JSON 函数的使用。
JSON 数据查询
1. 查询 JSON 格式数据中的某个属性值
在查询 JSON 数据中多个属性值时,可以使用 ->
或 ->>
操作符。其中,->
返回属性值的 JSON 数据类型,->>
则返回属性值的字符串形式。
以下是一个示例,假设数据表 user
中已经存储了 JSON 格式数据:
create table user (
id INT primary key,
info json
);
INSERT INTO user (id, info) VALUES (1, '{"name": "Jack", "age": 18, "location": {"state": "California", "city": "Los Angeles"}}');
查询 name 属性的值:
SELECT info ->> '$.name' AS name FROM user;
查询结果:
+----+------+
| id | name |
+----+------+
| 1 | Jack |
+----+------+
2. 查询 JSON 格式数据中的数组
当 JSON 数据中包含数组时,可以使用 JSON_EXTRACT()
函数来查询数组中的元素。该函数的语法如下:
JSON_EXTRACT(json_doc, path[, path] ...)
其中,json_doc
是被查询的 JSON 数据;path
采用 JSONPath 结构体的描述方式,用来指定需要查询的数组元素。下面是一个根据 JSON 数组元素查询的示例:
INSERT INTO user (id, info) VALUES (2, '{"name": "Lily", "scores": [90, 98, 96, 100]}');
SELECT JSON_EXTRACT(info, '$.scores[1]') AS score FROM user;
其中 '$'
表示 JSON 对象,'[1]'
表示数组第二个元素(索引从0开始)。
查询结果:
+-------+
| score |
+-------+
| 98 |
+-------+
总结
通过学习本文,我们可以掌握在 MySQL 中对 JSON 格式数据进行查询操作的方法。查询操作较为灵活,可以依据需要使用 ->
、->>
等操作符或者 JSON_EXTRACT()
函数来查询需要的属性值和数组元素。在实际生产中,我们可以依据场景需要使用 MySQL 的 JSON 数据类型进行开发和应用。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:mysql json格式数据查询操作 - Python技术站