MySQL中如何查询JSON数据:SELECT JSON操作详解
在MySQL中,使用SELECT查询JSON数据主要通过->、->>运算符以及JSON函数(如JSON_EXTRACT()、JSON_UNQUOTE())实现,可直接提取或解析JSON字段中的特定值。 这些功能自MySQL 5.7版本引入,极大地简化了半结构化数据的处理,下面将详细说明关键方法,帮助您高效操作JSON类型数据。
核心运算符:快速提取JSON值
MySQL提供了两种专用运算符,用于在SELECT查询中访问JSON字段:

-
->运算符:用于提取JSON对象中的值,返回结果仍为JSON类型。SELECT column->'$.key' FROM table;
这会从JSON列
column中提取路径$.key对应的值,保持JSON格式。 -
->>运算符:提取JSON值并转换为字符串。SELECT column->>'$.key' FROM table;
这会将结果直接转为普通文本,便于后续比较或计算。
常用JSON函数详解
除了运算符,MySQL还内置了丰富的JSON函数,满足复杂查询需求:
-
JSON_EXTRACT()函数:功能与->类似,但支持同时提取多个路径。SELECT JSON_EXTRACT(column, '$.key1', '$.key2') FROM table;
-
JSON_UNQUOTE()函数:去除JSON值的引号,相当于->>的替代写法。SELECT JSON_UNQUOTE(column->'$.key') FROM table;
-
JSON_SEARCH()函数:在JSON文本中搜索特定值,返回其路径,例如查找值为"example"的路径:SELECT JSON_SEARCH(column, 'one', 'example') FROM table;
实际应用示例
假设有一张users表,其中profile列为JSON类型,存储用户信息:
{
"name": "张三",
"age": 30,
"address": {"city": "北京", "zip": "100000"}
}
- 查询用户姓名:
SELECT profile->>'$.name' AS user_name FROM users;
- 查询嵌套的城市信息:
SELECT profile->'$.address.city' AS city FROM users;
- 结合WHERE筛选:查找城市为“北京”的用户:
SELECT * FROM users WHERE profile->>'$.address.city' = '北京';
性能与最佳实践
- 索引优化:MySQL支持对JSON字段的部分路径创建索引,使用
JSON_EXTRACT()配合生成列(Generated Columns)提升查询速度。 - 路径简写:
$.key是标准路径格式,支持数组索引(如$.array[0])和通配符(如$.prefix.*)。 - 版本兼容:确保使用MySQL 5.7及以上版本,并优先选择
->>避免隐式类型转换问题。
MySQL的JSON查询工具将灵活的半结构化数据与传统关系型数据库的优势结合,通过掌握->、->>运算符及关键JSON函数,您可以轻松实现高效数据提取与处理,在实际应用中,建议根据场景选择合适方法,并注意索引优化以保障性能。
未经允许不得转载! 作者:HTML前端知识网,转载或复制请以超链接形式并注明出处HTML前端知识网。
原文地址:https://www.html4.cn/13556.html发布于:2026-08-28





