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

JSON合并函数

  • MySQL8.0(MySQL5.7.22)增加了JSON _ MEFRGE _PATCH()。
    它用于将两个JSON对象合并为一个对象
  • MySQL8.0(MySQL5.7.22)增加了JSON _ MERGE _ PRESERV()。
    他也是用于将两个JSON对象合并为一个对象。
  • MySQL8.0废弃了JSON _ MERGE.

它们两个的差别在于上面这个函数,如果两个对象当中有相同的结点,它会使用第二个对象当中的结点,覆盖第一个结点。
那么第二个函数,如果存在两个相同的结点,它会保留两个结点当中的值。实际上第二个函数实现了之前版本中的JSON_MERGE函数,所以在8.0当中为了语义的清晰,它废除了JSON_MERGE函数。
下面我们通过示例了解两个函数的差异:


1.jpg

2.jpg

JSON表函数

MySQL8.0增加了JSON_TABLE(),将JSON数据转换为关系表,可以将该函数的返回结果当作一个普通的表,使用SQL进行查询
示例:

    select * from
->json _ table (               //它返回的是一个关系型的表
->'[{"a";3},{"b";"2"},{“c”;1},{"a";[1,2]}]'      //数据的来源,json对象的数组
->"$[*]" columns(        //满足输出条件的正则表达式
   //转换之后的关系表的结构
->rowid for ordinality     
->ac varchar(100) path."$.a" default"999" on errow default'111' on empty,
->aj json exists path "$.b")
->) as tt;

这是一个使用json_table函数转换成JSON数组,将json数组转化为关系型结构表的一个实例。

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