1. MySQL中JSON字段的行列转换实战
最近在数据统计项目中遇到一个典型场景:后端业务数据以JSON格式存储在MySQL中,而大数据统计需要将这些嵌套的JSON结构展开为行记录。这种JSON转行的需求在实际开发中非常常见,今天我就结合实战案例,详细讲解MySQL中处理JSON数据的完整方案。
先看一个典型的JSON数据结构:
json复制{
"filed1": 1,
"filed2": 2,
"arry": [
{
"arry1": ["10","11"],
"filed3": "20",
"arry2": ["30","31"],
"arry3": [
{"key": "1111", "values": "aaaa"},
{"key": "2222", "values": "bbbb"}
]
}
]
}
这种三层嵌套结构(对象→数组→对象)在实际业务中很常见,我们需要将其展开为平面表格形式,才能进行统计分析。下面我将分步骤解析完整的处理方案。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. JSON处理核心函数解析
MySQL从5.7版本开始原生支持JSON数据类型,提供了一系列JSON处理函数。我们先了解几个关键函数:
2.1 基础解析函数
JSON_PARSE/JSON_EXTRACT:
sql复制-- 将字符串解析为JSON对象
SET @json = JSON_PARSE('{"name":"John"}');
-- 提取JSON中的特定字段
SELECT JSON_EXTRACT(@json, '$.name'); -- 输出"John"
注意:某些MySQL版本中
JSON_PARSE可能显示为PARSE_JSON,两者功能相同
JSON_UNQUOTE:
sql复制-- 去除JSON字符串的引号
SELECT JSON_UNQUOTE('"text"'); -- 输出text
2.2 数组展开函数
JSON_TABLE (MySQL 8.0+):
sql复制-- 将JSON数组展开为行
SELECT j.*
FROM my_table,
