sql自学笔记(二十六)——MySQL8.0版本的新特性(十六)

JSON增强

  • 内联路径操作符
  • JSON聚合函数
  • JSON实用函数
  • JSON合并函数
  • JSON表函数

内联路径操作符

MySQL8.0增加了JSON操作符column ->> path,等价于:

JSON _ UNQUOTE(COLUMN -> PATH)
JSON _ UNQUOTE(JSON _ EXTRACT(column,path))

示例:使用通过用表达式定义一个文档

    with doc(data) as
->(select json _ object('id','3','name','Barney'))
->select json _ unguote(data ->'$.name')from doc;
sql自学笔记(二十六)——MySQL8.0版本的新特性(十六)_第1张图片

还有一种方式也是之前版本所支持的。

       with doc(data) as
->(select json _ object('id','3','name','Barney'))
->select json _ unguote(json _ extract(data,'$.name'))from doc;
sql自学笔记(二十六)——MySQL8.0版本的新特性(十六)_第2张图片

再看一下在8.0中的最新的写法

with doc(data) as (select json _ object('id','3','name','Barney'))select data ->> '$.name' from doc;
sql自学笔记(二十六)——MySQL8.0版本的新特性(十六)_第3张图片

这三个方式获取的结果是一样的,只不过是他们的写法不同,那么最新的8.0使用的内联路径运算符相对来说更加简单,那同时对于路径运算符我们还需要有一个注意的地方那就是MySQL8.0它还扩展了我们这个路径表达式的一个语法,可以支持范围操作。
示例:
定义一个数组,下标为1的字符

select json _ extract('["a","b","c","d","e"]','$[1]');
sql自学笔记(二十六)——MySQL8.0版本的新特性(十六)_第4张图片

在新版本中,支持范围,获取下标从1到3,3个元素

select json _ extract('["a","b","c","d","e"]','$[1 to 3]');
sql自学笔记(二十六)——MySQL8.0版本的新特性(十六)_第5张图片

除了使用数字,还可以使用一些预定好的,比如lest,lest表示最后一位。

select json _ extract('["a","b","c","d","e"]','$[last -2 to last ]');
sql自学笔记(二十六)——MySQL8.0版本的新特性(十六)_第6张图片

你可能感兴趣的:(sql自学笔记(二十六)——MySQL8.0版本的新特性(十六))