MySQL8拆分json格式数据
JSON_TABLE()函数说明
MySQL8.0.4,新增JSON_TABLE()函数。此函数可以将JSON 数据转换为指定列数据返回。
JSON_TABLE()函数的使用方法参考官方文档:
https://dev.mysql.com/doc/refman/8.0/en/json-table-functions.html
例1:直接转换json格式数据
mysql> SELECT * FROM
JSON_TABLE(
'{"a": 23, "b": 27, "c": 1}',
'$'
COLUMNS(
at VARCHAR(10) PATH '$.a' DEFAULT '1' ON EMPTY
,bt VARCHAR(10) PATH '$.b' DEFAULT '2' ON EMPTY
,ct VARCHAR(10) PATH '$.c' DEFAULT '3' ON EMPTY
)
) AS tt;
+------+------+------+
| at | bt | ct |
+------+------+------+
| 23 | 27 | 1 |
+------+------+------+
1 row in set (0.00 sec)
例2:将表中json格式列内容转换为指定列数据
-- 创建测试表:
CREATE TABLE t1 (c1 INT, c2 CHAR(1), c3 JSON);
INSERT INTO t1 () VALUES
ROW(1, 'z', JSON_OBJECT('a', 23, 'b', 27, 'c', 1)),
ROW(1, 'y', JSON_OBJECT('a', 44, 'b', 22, 'c', 11)),
ROW(2, 'x', JSON_OBJECT('b', 1, 'c', 15)),
ROW(3, 'w', JSON_OBJECT('a', 5, 'b', 6, 'c', 7)),
ROW(5, 'v', JSON_OBJECT('a', 123, 'c', 1111))
;
-- 数据转换测试:
mysql> SELECT c1, c2, JSON_EXTRACT(c3, '$.*') ,tt.*
-> FROM t1 AS m
-> JOIN
-> JSON_TABLE(
-> m.c3,
-> '$'
-> COLUMNS(
-> at VARCHAR(10) PATH '$.a' DEFAULT '1' ON EMPTY,
-> bt VARCHAR(10) PATH '$.b' DEFAULT '2' ON EMPTY,
-> ct VARCHAR(10) PATH '$.c' DEFAULT '3' ON EMPTY
-> )
-> ) AS tt;
+------+------+-------------------------+------+------+------+
| c1 | c2 | JSON_EXTRACT(c3, '$.*') | at | bt | ct |
+------+------+-------------------------+------+------+------+
| 1 | z | [23, 27, 1] | 23 | 27 | 1 |
| 1 | y | [44, 22, 11] | 44 | 22 | 11 |
| 2 | x | [1, 15] | 1 | 1 | 15 |
| 3 | w | [5, 6, 7] | 5 | 6 | 7 |
| 5 | v | [123, 1111] | 123 | 2 | 1111 |
+------+------+-------------------------+------+------+------+
5 rows in set (0.00 sec)
免责声明:
1、本站资源由自动抓取工具收集整理于网络。
2、本站不承担由于内容的合法性及真实性所引起的一切争议和法律责任。
3、电子书、小说等仅供网友预览使用,书籍版权归作者或出版社所有。
4、如作者、出版社认为资源涉及侵权,请联系本站,本站将在收到通知书后尽快删除您认为侵权的作品。
5、如果您喜欢本资源,请您支持作者,购买正版内容。
6、资源失效,请下方留言,欢迎分享资源链接
文章评论