在db中存储json格式的数据,相信大家都或多或少的使用过,那么在查询这个json结构中的数据时,有什么好的方法么?取出String之后再代码中进行解析?
接下来本文将介绍一下Mysql5.7+之后提供的json_extract函数,可以通过key查询value值
1. 使用方式
数据存储的数据是json字符串,类型为我们常用的varchar即可
语法:
1 | JSON_EXTRACT(json_doc, path[, path] …) |
若json字符串非数组时,可以通过$.字段名
来表示查询对应的value
2.使用演示
创建一个测试的表
1 | CREATE TABLE `json_table` ( |
插入几条数据
1 | insert into `json_table` values (1, '{"name": "一灰灰blog", "age": 18}'); |
查询json串中的name
,如下
1 | mysql> select json_extract(`val`, '$.name') from `json_table`; |
如果查询的key不在json串中,返回的是null,而不是抛异常
1 | mysql> select json_extract(`val`, '$.name') as `name`, json_extract(`val`, '$.site') as `site` from `json_table`; |
接下来再看一下如果为json数组,怎么整
1 | mysql> insert into `json_table` values (3, '[{"name": "一灰灰", "site": "https://spring.hhui.top"}]'); |
除了在查询结果中使用json_extract之外,也可以在查询条件中使用它
1 | mysql> select * from `json_table` where json_extract(`val`, '$.name') = '一灰灰blog'; |
3. 小结
本文主要介绍json_extract函数的使用姿势,用于解析字段内value为json串的场景
基本使用姿势
- json对象:json_extract(‘db字段’, ‘$.json串key’)
- json数组:json_extract(‘db字段’, ‘$[数组下标].json串key’)
一灰灰的联系方式
尽信书则不如无书,以上内容,纯属一家之言,因个人能力有限,难免有疏漏和错误之处,如发现bug或者有更好的建议,欢迎批评指正,不吝感激
- 个人站点:https://blog.hhui.top
- 微博地址: 小灰灰Blog
- QQ: 一灰灰/3302797840
- 微信公众号:一灰灰blog