SQL Server 解析Json(单层/多层)
一,单层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(单层/多层)的更多相关文章
- SQL SERVER解析Json
外包的项目,有很多信息存储在JSON中,无论是查询还是修改信息都十分麻烦.找了一些实用的SQL Function去解析,并附修改例子. 使用过程: 1. 需要在SQL新建自定义类型 table: Hi ...
- 三、SQL Server 对JSON的支持
一.SQL Server 对JSON的支持 一.实现效果 现在 我用数据库是sql2008 ,共计2万数据. 每一条数据里面的有一个为attribute字段是 json存储状态属性, 我怎么查看 ...
- .NET Core 1.1日期解析无APi、SQL Server数据转换JSON
前言 在批量导入Excel中的数据时发现出生日期为整数也就是为天数,结果倒腾了翻,这是其一,其二是数据库中的某一列存的是JSON数据,但是场景是为了作为作业来运行,此时不得不将筛选出的数据手动拼接成J ...
- SQL Server 2016 JSON原生支持实例说明
背景 Microsoft SQL Server 对于数据平台的开发者来说越来越友好.比如已经原生支持XML很多年了,在这个趋势下,如今也能在SQLServer2016中使用内置的JSON.尤其对于一些 ...
- SQL Server之JSON 函数
SQL Server 2005开始支持XML数据类型,提供原生的XML数据类型.XML索引及各种管理或输出XML格式的函数.随着JSON的流行,SQL Server2016开始支持JSON数据类型,不 ...
- SQL Server解析XML数据的方法详解
--下面为多种方法从XML中读取EMAIL DECLARE @x XML SELECT @x = ' <People> <dongsheng> <Info Name=&q ...
- sql server 2016 JSON 学习笔记
虽然现在win服务器已经几乎不用了,但是网上看到2016开始原生支持json 还是想试试 建立一个表 id int , json varchar(2000) json字段中输入数据 {"r ...
- 再次提供一个纯粹通过pl/sql解析json的方法。
在github上面有一个叫pljson的项目,该项目就是用pl/sql 来解析json的. 项目地址:pljson(需翻|强),如果翻不了强的同学,我在国内克隆了一个副本,不定期同步更新 pljson ...
- 为sql server 增加 parseJSON 和 ToJSON 函数
在SqlServer中增加Json处理的方法 Sql Server 存储非结构话数据可以使用xml类型,使用xpath方式查询,以前写过一篇随笔:Sql Server xml 类型字段的增删改查 除了 ...
- SQL Server : Browser服务
SQL Server : Browser服务是SQL Server 2005新增的,简单的说,如果一个物理服务器上面有多个SQL Server实例,那么为了确保客户端能访问到正确的实例,所以SQL S ...
随机推荐
- php 反序列化字符串逃逸
这里总结一下反序列化字符串逃逸的知识点 反序列化字符串逃逸分为 被过滤后字符增多和字符减少的情况 这里就不讲之前的基础知识了 大家看其它师傅写的博客就可以了 很多师傅的文章写的都很细 现在直接就开始进 ...
- 提取可执行文件中的调试信息 objcopy --only-keep-debug app app.debug
https://blog.csdn.net/CaspianSea/article/details/17269977 set-debug-directory show-debug-directory i ...
- Delphi针对双字节字段处理
针对有些特殊的中文字如"错畸形安氏I类"中""字,属于特殊字符,在Oracle数据库中必须以双字节方式存储,字段定义为nVarchar2(100). 在Delp ...
- 谈谈关于CDN缓存
一.CDN是什么? 谈到CDN的作用,可以用8年买火车票的经历来形象比喻: 8年前,还没有火车票代售点一说,12306.cn更是无从说起.那时候火车票还只能在火车站的售票大厅购买,而我所住的小县城并不 ...
- codeforces 1391E Pairs of Pairs dfs树的性质
https://codeforces.com/problemset/problem/1391/E 题意:给一个无向图,找出以下任意一种输出答案 1,长度>=n/2(上界)的简单路径(没有同一个点 ...
- zabbix中文显示乱码解决
问题zabbix使用中文显示,"监测-->图形"查看资源使用情况时会有乱码 解决问题1.修改配置文件(文件位置:$zabbix_path/include/defines.in ...
- docker镜像原理(一)
在理解什么是docker镜像之前我们需要搞懂虚拟机系统到底是怎么组成的如何实现的,docker中又是如何安装和使用虚拟机系统的,怎样可以高效灵活的切换系统发行版等问题 一.centos7系统长什么样 ...
- iOS SDK开发
一款好用且设计充分的 SDK 必须要遵循以下 4 条基本原则,即: 1.SDK 安全,稳定2.统一的开发规范3.Library 小而精4.不依赖第三方 SDK安全,稳定:考虑到 SDK 是需要嵌入到 ...
- 94、springboot+minio实现分片上传(超大文件快速上传)
设计由来 在实际的项目开发中常遇到超大附件上传的情况,有时候客户会上传GB大小的文件,如果按照普通的MultipartFile方式来接收上传的文件,那么无疑会把服务器给干崩溃,更别说并发操作了.于是笔 ...
- dialog弹窗里生成二维码 (reading qppendChild)
在dialog弹窗里生成二维码第一次点击时 dialogFormVisible.value=false,二维码生成时会找不到对象可以用nextTick()函数 将二维码生成代码放到nextTick() ...