码迷,mamicode.com
首页 > Web开发 > 详细

继续说一下openjson 以及 json path 的使用 (2)

时间:2016-04-18 13:15:26      阅读:380      评论:0      收藏:0      [点我收藏+]

标签:

在openjson 里面,其实是可以把数据类型array里面的值遍历出来的,举个栗子

declare @v nvarchar(500) = N
{"name":"test",
  "obj":{"arr":[1,"ofao",3,4,5]}
}

select * from openjson(@v)
/*
key    value    type
name    test    1
obj    {"arr":[1,"ofao",3,4,5]}    5 
*/


select * 
    from openjson (@v,$.obj.arr)
/*
key    value    type
0    1    2
1    ofao    1
2    3    2
3    4    2
4    5    2
*/

这样,就可以把array里面的每一个元素从列转行出来。是不是看起来很方便~虽然目前没有用到,但是留存个认知还是好的。

说到这里,我就还想说一下 json里面的path 的用法。json path 的基础写法,其实和xml 的路径写法类似

技术分享
declare @v nvarchar(600) = N[{"ID":1,"name":"张三","Chinese":90,"Math":80},{"ID":2,"name":"李四","Chinese":75,"Math":90},{"ID":3,"name":"王五","Chinese":68,"Math":100},{"ID":4,"name":"赵六","Chinese":100}]

select * from openjson(@v)
with (
ID int $.ID,
name nvarchar(50) $.name,
Math int $.Math,
Chinese int $.Chinese
)
参考之前的例子

就是在路径之前加上一个 $. 的前缀,然后每一级就用一个. 来探查下一级。(PS:json 这里计数从0开始,不是1开始)

declare @v nvarchar(500) = N
{"name":"test",
  "obj":{"arr":[1,"ofao",3,4,5],
  }
}

select json_value(@v,$.obj.arr[0])

--
1


目前呢,我还没发现它支持类似 xml里面的那种 //node 的写法,如果各位朋友找到的话,烦请告诉小弟一声~

好~这次就到这里~

 

继续说一下openjson 以及 json path 的使用 (2)

标签:

原文地址:http://www.cnblogs.com/Gin-23333/p/5403925.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!