原创: 杨涛涛
我们知道,JSON是一种轻量级的数据交互的格式,大部分NO SQL数据库的存储都用JSON。MySQL从5.7开始支持JSON格式的数据存储,并且新增了很多JSON相关函数。MySQL 8.0 又带来了一个新的把JSON转换为TABLE的函数JSON_TABLE,实现了JSON到表的转换。
举例一
我们看下简单的例子:
简单定义一个两级JSON 对象
mysql> set @ytt='{"name":[{"a":"ytt","b":"action"}, {"a":"dble","b":"shard"},{"a":"mysql","b":"oracle"}]}';
Query OK, 0 rows affected (0.00 sec)
第一级:
mysql> select json_keys(@ytt);
+-----------------+
| json_keys(@ytt) |
+-----------------+
| ["name"] |
+-----------------+
1 row in set (0.00 sec)
第二级:
mysql> select json_keys(@ytt,'$.name[0]');
+-----------------------------+
| json_keys(@ytt,'$.name[0]') |
+-----------------------------+
| ["a", "b"] |
+-----------------------------+
1 row in set (0.00 sec)
我们使用MySQL 8.0 的JSON_TABLE 来转换 @ytt。
mysql> select * from json_table(@ytt,'$.name[*]' columns (f1 varchar(10) path '$.a', f2 varchar(10) path '$.b')) as tt;
+-------+