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

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

作者: itczt | 来源:发表于2019-05-14 19:16 被阅读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;
    

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

           with doc(data) as
    ->(select json _ object('id','3','name','Barney'))
    ->select json _ unguote(json _ extract(data,'$.name'))from doc;
    

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

    with doc(data) as (select json _ object('id','3','name','Barney'))select data ->> '$.name' from doc;
    

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

    select json _ extract('["a","b","c","d","e"]','$[1]');
    

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

    select json _ extract('["a","b","c","d","e"]','$[1 to 3]');
    

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

    select json _ extract('["a","b","c","d","e"]','$[last -2 to last ]');
    

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/dlbsaqtx.html