一,单层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字段
);

最新文章

  1. [LeetCode] N-Queens II N皇后问题之二
  2. 【转载】.NET模拟POST登录并保持登录状态
  3. 前端 动态表单提交(post、put)
  4. ffmpeg-20160617-git-bin.7z ffmpeg-20160626-git-bin.7z
  5. POJ1637 Sightseeing tour(判定混合图欧拉回路)
  6. Qt中使用ActiveX(3篇)
  7. Redis Sentinel机制与用法
  8. Apache OFBiz 学习笔记 之 服务引擎 一
  9. WildFly 9.0.2+mod_cluster-1.3.1 集群配置
  10. Ajax第一课
  11. java Domj4读取xml文件加强训练案例
  12. PTA——出现次数最多的数
  13. Qt5.12.2开发Android环境搭建
  14. FFmpeg制作+x264+faac
  15. JustOj 1032: 习题6.7 完数
  16. web 前端安全问题
  17. POJ3273--Monthly Expense(Binary Search)
  18. asp.net将ppt文档转换成pdf
  19. MYC编译器源码之代码生成
  20. Android 开发工具类 05_Logcat 统一管理类

热门文章

  1. GNN学习(一):基础知识
  2. JAVA常用类(一)Syatem类
  3. ksfitappUI自动化(准备+安装环境)
  4. IDEA中引入smarttomcat后控制台输出乱码,运行跳转到浏览器
  5. OpenLayer——绘制带箭头的线
  6. gitee 上传远程仓库失败
  7. 100多个常用 API 接口整理大全
  8. ValueError: Unable to determine SOCKS version from socks
  9. encodeURI和encodeURIComponent
  10. gym102586C Sum Modulo