MySQL解析json字段以及遍历json字段

MySQL解析json字段以及遍历json字段

MySQL 5.7版本以后支持json格式的字段类型定义、存储和使用,最近做BI开发,开发把所需数据用JSON的形式存储在字段中,本次记录下MySQL解析JSON。
官方参考:https://dev.mysql.com/doc/refman/8.0/en/json.html

一般来说,主要是提取json字段的值,所以update就不写了,提取select json使用的参数是:

JSON_EXTRACT

JSON_EXTRACT参数使用方式是:JSON_EXTRACT(json串,'$.key'),select后得到的是key值对应的value;

那么,如何解释$

$,指得是json串,这里的json串,是$之前的变量;例如:

JSON_EXTRACT('{1:0,2:0}','$.key') 这里$.key$指的是他前面的{1:0,2:0}

JSON_EXTRACT(JSON_EXTRACT('{1:0,2:0}','$.1'),'$.key')

这里$.key$指的是他前面的JSON_EXTRACT('{1:0,2:0}','$.1'),

如果有多层

  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
MySQL 5.7 版本及以后,提供了对 JSON 数据类型的支持。MySQL 内置了一些处理 JSON 数据的函数,可以方便地查询和操作 JSON 数据。 要解析 JSON 数组,可以使用 `JSON_EXTRACT()` 函数和 MySQL 提供的 JSON 路径表达式,具体操作步骤如下: 1. 创建一个表,包含一个 JSON 类型的字段: ```sql CREATE TABLE test_json ( `id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, `data` JSON NOT NULL ); ``` 2. 插入一些数据,包含一个 JSON 数组: ```sql INSERT INTO test_json (`data`) VALUES ('["apple", "banana", "cherry"]'), ('["orange", "pear", "pineapple"]'); ``` 3. 使用 `JSON_EXTRACT()` 函数解析 JSON 数组,返回指定位置的元素: ```sql SELECT JSON_EXTRACT(`data`, '$[0]') AS `first_element` FROM test_json; ``` 输出结果为: ``` +---------------+ | first_element | +---------------+ | "apple" | | "orange" | +---------------+ ``` 上述 SQL 语句中,`JSON_EXTRACT()` 函数的第一个参数是 JSON 类型的字段,第二个参数是 JSON 路径表达式,`$[0]` 表示取 JSON 数组中的第一个元素。 4. 可以使用 `JSON_LENGTH()` 函数获取 JSON 数组的长度,然后使用 `JSON_EXTRACT()` 函数遍历数组: ```sql SELECT JSON_EXTRACT(`data`, CONCAT('$[', n, ']')) AS `element` FROM test_json JOIN (SELECT 0 AS n UNION SELECT 1 UNION SELECT 2) AS numbers ON n < JSON_LENGTH(`data`); ``` 输出结果为: ``` +-----------+ | element | +-----------+ | "apple" | | "banana" | | "cherry" | | "orange" | | "pear" | | "pineapple"| +-----------+ ``` 上述 SQL 语句中,使用了一个子查询生成一个数字序列,然后使用 `JSON_LENGTH()` 函数获取数组长度,使用 `CONCAT()` 函数和数字序列生成 JSON 路径表达式,最后使用 `JSON_EXTRACT()` 函数遍历数组。 以上就是在 MySQL解析 JSON 数组的方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

姜源Jerry

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值