需要注意,5.7以上版本才支持,但如果是生产环境需要使用的话,尽量使用8.0版本,因为8.0版本对json处理做了比较大的性能优化。你你可以使用select version();来查看版本信息。
本文看下MySQL的json处理。在正式开始让我们先来准备一些测试数据:
CREATE TABLE `dept` (`id` int(11) NOT NULL,`dept` varchar(255) DEFAULT NULL,`json_value` json DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;insert into dept VALUES(1,'部门1','{"deptName": "部门1", "deptId": "1", "deptLeaderId": "3"}');
insert into dept VALUES(2,'部门2','{"deptName": "部门2", "deptId": "2", "deptLeaderId": "4"}');
insert into dept VALUES(3,'部门3','{"deptName": "部门3", "deptId": "3", "deptLeaderId": "5"}');
insert into dept VALUES(4,'部门4','{"deptName": "部门4", "deptId": "4", "deptLeaderId": "5"}');
insert into dept VALUES(5,'部门5','{"deptName": "部门5", "deptId": "5", "deptLeaderId": "5"}');
1:json字段名->’ . j s o n 属性’通过 j s o n 字段名 − > ’ .json属性’ 通过json字段名->’ .json属性’通过json字段名−>’.json属性’语法格式可以访问到json中某个key的值,以如下查询方式看下。
1.1:用在DQL查询结果中
mysql> select id,json_value->'$.deptLeaderId' from dept where id=2;
+----+------------------------------+
| id | json_value->'$.deptLeaderId' |
+----+------------------------------+
| 2 | "4" |
+----+------------------------------+
1 row in set (0.01 sec)
用json字段名->’$.json属性’这个方式,可以发现查出来会被双引号包括,可以使用下面的方式进行查询,去除双引号;
SELECT id,json_value->>'$.deptName' FROM dept WHERE id=2;
参考文档:mysql的json处理