zoukankan      html  css  js  c++  java
  • 继续说一下openjson 以及 json path 的使用 (2)

    在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 的写法,如果各位朋友找到的话,烦请告诉小弟一声~

    好~这次就到这里~

  • 相关阅读:
    设计模式-转载
    Java-类和对象基础练习
    Java-单例模式(singleton)-转载
    java-面向对象练习2
    Java-面向对象基础练习
    Java-字符串练习
    Java-数组练习5
    Java-数组练习4
    JAVA-初步认识-常用对象API(String类-常见功能-获取-1)
    JAVA-初步认识-常用对象API(String类-构造函数)
  • 原文地址:https://www.cnblogs.com/Gin-23333/p/5403925.html
Copyright © 2011-2022 走看看