在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' )