一,单层Json数据取出

1.取出取出@JsonData字符串中的  __type,DocNo,OrderPriceTC,Organization_Code 字段

DECLARE @JsonData NVARCHAR(max)=''
SET @JsonData='[{
"__type":"CreateRcvFromPO_ReturnData:UFIDA.U9.Cust.XDS.ISV",
"DocNo":"RCV02204280003",
"ItemConsumeID":null,
"OrderPriceTC":0,
"Organization_Code":null,
"RcvRercordID":null
}]'
select * from openjson(@JsonData)
with(
id varchar(10) '$.__type',
Plies NVARCHAR(50) '$."DocNo"',
Createtime NVARCHAR(50) '$."OrderPriceTC"',
Organization_Code NVARCHAR(50) '$."Organization_Code"'
);

一,双层Json数据取出 / 多层数据取出

1.定义一个多层的Json

DECLARE @JsonData NVARCHAR(max)=''
--多个 嵌套Json
SET @JsonData='{
"d":{
"__type":"CreateRcvFromPO_ReturnData:UFIDA.U9.Cust.XDS.ISV",
"DocNo":"RCV02204280003",
"Organization_Code":null,
"RcvRercordID":null,
"ReturnRcvLineID":[
{
"__type":"CreateRcvFromPO_ReturnData.RcvLineID:#UFIDA.U9.Cust.XDS.ISV",
"rcvLineID":1002310281689864,
"wmsLineNo":"0001"
},
{
"__type":"CreateRcvFromPO_ReturnData.RcvLineID:#UFIDA.U9.Cust.XDS.ISV",
"rcvLineID":1002310281689866,
"wmsLineNo":"0002"
}
],
"Seiban":null,
"Seq":0,
"ShipQtyTUAmount":0
}
}'

2.第一层:d 第二层:d中的 DocNo,RcvRercordID,Seq,ReturnRcvLineID等字段, 第三层:ReturnRcvLineID 中的 __type,rcvLineID,wmsLineNo 等字段

3.获取第二层中的 DocNo 既然要获取到第二层 那么就先要获取到第一层的d 然后获取d下的DocNo 字段,那么就需要JSON_QUERY() 函数

--双层嵌套
SELECT *
FROM OPENJSON(JSON_QUERY(@JsonData,'$.d'))---获取到d层
WITH(
DocNo NVARCHAR(50) '$.DocNo', --d层下DocNo字段
OrderPriceTC NVARCHAR(50) '$.OrderPriceTC'--d层下OrderPriceTC字段
);

4.获取到第三层的 rcvLineID,wmsLineNo 字段  先使用函数JSON_QUERY() 先获取到d层 然后再嵌套一个 JSON_QUERY()函数 获取到 ReturnRcvLineID层

--三层嵌套
SELECT *
FROM OPENJSON(JSON_QUERY(JSON_QUERY(@JsonData,'$.d'),'$.ReturnRcvLineID'))--先获取到d 然后再获取到d下的 ReturnRcvLineID
WITH(
__type NVARCHAR(50) '$.__type', --获取ReturnRcvLineID 下的 __type字段
rcvLineID NVARCHAR(50) '$.rcvLineID', --获取ReturnRcvLineID 下的 rcvLineID字段
wmsLineNo NVARCHAR(50) '$.wmsLineNo' --获取ReturnRcvLineID 下的 wmsLineNo字段
);

SQL Server 解析Json(单层/多层)的更多相关文章

  1. SQL SERVER解析Json

    外包的项目,有很多信息存储在JSON中,无论是查询还是修改信息都十分麻烦.找了一些实用的SQL Function去解析,并附修改例子. 使用过程: 1. 需要在SQL新建自定义类型 table: Hi ...

  2. 三、SQL Server 对JSON的支持

    一.SQL Server 对JSON的支持 一.实现效果   现在 我用数据库是sql2008 ,共计2万数据. 每一条数据里面的有一个为attribute字段是 json存储状态属性,  我怎么查看 ...

  3. .NET Core 1.1日期解析无APi、SQL Server数据转换JSON

    前言 在批量导入Excel中的数据时发现出生日期为整数也就是为天数,结果倒腾了翻,这是其一,其二是数据库中的某一列存的是JSON数据,但是场景是为了作为作业来运行,此时不得不将筛选出的数据手动拼接成J ...

  4. SQL Server 2016 JSON原生支持实例说明

    背景 Microsoft SQL Server 对于数据平台的开发者来说越来越友好.比如已经原生支持XML很多年了,在这个趋势下,如今也能在SQLServer2016中使用内置的JSON.尤其对于一些 ...

  5. SQL Server之JSON 函数

    SQL Server 2005开始支持XML数据类型,提供原生的XML数据类型.XML索引及各种管理或输出XML格式的函数.随着JSON的流行,SQL Server2016开始支持JSON数据类型,不 ...

  6. SQL Server解析XML数据的方法详解

    --下面为多种方法从XML中读取EMAIL DECLARE @x XML SELECT @x = ' <People> <dongsheng> <Info Name=&q ...

  7. sql server 2016 JSON 学习笔记

    虽然现在win服务器已经几乎不用了,但是网上看到2016开始原生支持json 还是想试试 建立一个表  id int , json varchar(2000) json字段中输入数据 {"r ...

  8. 再次提供一个纯粹通过pl/sql解析json的方法。

    在github上面有一个叫pljson的项目,该项目就是用pl/sql 来解析json的. 项目地址:pljson(需翻|强),如果翻不了强的同学,我在国内克隆了一个副本,不定期同步更新 pljson ...

  9. 为sql server 增加 parseJSON 和 ToJSON 函数

    在SqlServer中增加Json处理的方法 Sql Server 存储非结构话数据可以使用xml类型,使用xpath方式查询,以前写过一篇随笔:Sql Server xml 类型字段的增删改查 除了 ...

  10. SQL Server : Browser服务

    SQL Server : Browser服务是SQL Server 2005新增的,简单的说,如果一个物理服务器上面有多个SQL Server实例,那么为了确保客户端能访问到正确的实例,所以SQL S ...

随机推荐

  1. 使用myBadboy(python自主开发工具)启动谷歌浏览器并自动录制jmeter脚本

    一.源代码下载 https://gitee.com/rmtic/mybadboy 说明:因现有的录制方法有不能定制等不足之处,所以自力更生,自动生成对应jmeter脚本,减少维护成本 二.操作说明 1 ...

  2. vue 安装脚手架后配置自动打开浏览器

    打开config目录下的index.js文件,将autoOpenBrowser: false,改为autoOpenBrowser: true,即可 autoOpenBrowser: true

  3. StatefulWidget 有状态组件 、 页面上绑定数据、改变页面数据

    一.Flutter 中自定义有状态组件 在 Flutter 中自定义组件其实就是一个类,这个类需要继承 StatelessWidget/StatefulWidget. StatelessWidget ...

  4. springboot配置文件中的基本配置

    #应用启动端口设置server.port=9088#=================================微信相关====================================# ...

  5. 关闭 Microsoft Compatibility Telemetry

    Microsoft Compatibility Telemetry可能会导致操作系统(Win10)启动后一直读盘,打开任务管理器可能会看到 Microsoft Compatibility Teleme ...

  6. redis常用命令之Hash

    redis常用命令之Hash Hash常用命令 redis 可以理解为一个全局的大字典,key就是数据的唯一标识符.对应的key不同,value也不同.redis有5个基本的数据类型. 1 redis ...

  7. knife4j 整合springboot

    1.添加依赖 <dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>knife ...

  8. pushd 和 popd

    可以把你当前的文件路径 放进一个栈里,后边拿出来 很方面的skim方法

  9. go-bindata安装问题

    问题描述使用命令 go get -u github.com/jteeuwen/go-bindata/... 报错: go get -u github.com/go-bindata/go-bindata ...

  10. 实时搜索引擎Elasticsearch

    Elasticsearch(简称ES)是一个基于Apache Lucene(TM)的开源搜索引擎,无论在开源还是专有领域,Lucene可以被认为是迄今为止最先进.性能最好的.功能最全的搜索引擎库. E ...