MySql中的json_extract函数处理json字段详情

吾爱主题 阅读:130 2024-04-01 23:26:04 评论:0

前言

在db中存储json格式的数据,相信大家都或多或少的使用过,那么在查询这个json结构中的数据时,有什么好的方法么?取出String之后再代码中进行解析?

接下来本文将介绍一下Mysql5.7+之后提供的json_extract函数,可以通过key查询value值

1. 使用方式

数据存储的数据是json字符串,类型为我们常用的varchar即可

语法:

?
1 JSON_EXTRACT(json_doc, path[, path] …)

若json字符串非数组时,可以通过$.字段名来表示查询对应的value

2. 使用演示

创建一个测试的表:

?
1 2 3 4 5 CREATE TABLE `json_table` (    `id` bigint (20) NOT NULL AUTO_INCREMENT COMMENT '主键id' ,    `val` json DEFAULT NULL COMMENT 'json字符串' ,    PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

插入几条数据:

?
1 2 insert into `json_table` values (1, '{"name": "一灰灰blog", "age": 18}' ); insert into `json_table` values (2, '{"name": "一灰灰blog", "site": "https://blog.hhui.top"}' );

查询json串中的name如下:

?
1 2 3 4 5 6 7 mysql> select json_extract(`val`, '$.name' ) from `json_table`; + -------------------------------+ | json_extract(`val`, '$.name' ) | + -------------------------------+ | "一灰灰blog"                  | | "一灰灰blog"                  | + -------------------------------+

如果查询的key不在json串中,返回的是null,而不是抛异常

?
1 2 3 4 5 6 7 mysql> select json_extract(`val`, '$.name' ) as ` name `, json_extract(`val`, '$.site' ) as `site` from `json_table`; + -----------------+-------------------------+ | name            | site                    | + -----------------+-------------------------+ | "一灰灰blog"    | NULL                    | | "一灰灰blog"    | "https://blog.hhui.top" | + -----------------+-------------------------+

接下来再看一下如果为json数组,怎么整

?
1 2 3 4 5 6 7 mysql> insert into `json_table` values (3, '[{"name": "一灰灰", "site": "https://spring.hhui.top"}]' ); mysql> select json_extract(`val`, '$[0].name' ) from `json_table` where id = 3; + ----------------------------------+ | json_extract(`val`, '$[0].name' ) | + ----------------------------------+ | "一灰灰"                         | + ----------------------------------+

除了在查询结果中使用json_extract之外,也可以在查询条件中使用它

?
1 2 3 4 5 6 7 mysql> select * from `json_table` where json_extract(`val`, '$.name' ) = '一灰灰blog' ; + ----+------------------------------------------------------------+ | id | val                                                        | + ----+------------------------------------------------------------+ |  1 | { "age" : 18, "name" : "一灰灰blog" }                          | |  2 | { "name" : "一灰灰blog" , "site" : "https://blog.hhui.top" }    | + ----+------------------------------------------------------------+

3. 小结

json_extract函数的使用方法,用于解析字段内value为json串的场景

到此这篇关于MySql中的json_extract函数处理json字段详情的文章就介绍到这了,更多相关MySql 处理json 内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://juejin.cn/post/7103482347894358046

可以去百度分享获取分享代码输入这里。
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

【腾讯云】云服务器产品特惠热卖中
搜索
标签列表
    关注我们

    了解等多精彩内容