上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
5.5 JSON列解析
有时候,数据库中的数据是按照JSON格式存储的,什么是JSON格式呢?如果读者学过Python,应该都知道字典这种数据结构,就是最外层用花括号括起来,花括号中是key:value的形式,key可以理解成普通表中的字段名,value就是这个字段的取值,一般花括号中会包含多个key:value,也就是虽然只用了一列位置,但是存储了多列数据,用户可以根据需要选择对应的key:value值。在SQL中,我们可以使用json_extract()对JSON列中的数据进行获取。
chapter5表中的score列就是JSON格式,比如,我们要获取每个id对应的数学成绩,可以通过如下代码实现:
select id ,json_extract(score,'$.数学') as "数学成绩" from demo.chapter5
运行上面的代码,具体运行结果如下表所示。
json_extract()主要有两个参数,第一个参数需要说明JSON格式的列名,此处是score列;第二个参数需要说明你要获取JSON中具体哪个key对应的value值,注意key前面的$符号不可少。此处是要获取“数学”这个key对应的数学成绩这个value值。
json_extract()用于获取JSON中key对应的value值,如果我们想要查看JSON中都有哪些key,则可以通过json_keys()来实现。比如,我们要查看每个id对应的score列中都有哪些key,就可以通过如下代码实现:
select id ,json_keys(score) as "科目" from demo.chapter5
运行上面的代码,具体运行结果如下表所示。