单层json解析
--声明变量
declare @JsonData nvarchar(max)= '
{
"BillName":"12345765",
"SendDate":"2022-11-10T00:00:00",
"ShippingDate":"2022-11-10T00:00:00",
"PackagingDate":"2022-11-10T00:00:00",
"ProductName":"11111",
"Qty":5
}'
--json解析
SELECT *
FROM OPENJSON(@JsonData)
WITH(
BillName NVARCHAR(50) '$.BillName' , --单号
SendDate Datetime '$.SendDate', --送检时间
ShippingDate datetime '$.ShippingDate', --出货日期
PackagingDate datetime '$.PackagingDate', --打包日期
ProductName NVARCHAR(50) '$.ProductName', --料号
Qty NVARCHAR(50) '$.Qty' --数量、
)
例:
将解析的数据直接存到表中
INSERT INTO tableName(表名) ( BillName , --单号 SendDate , --送检时间 ShippingDate , --出货日期 PackagingDate ,--打包日期 ProductName , --料号(带出NVT机种、测试设备) Qty --数量、 ) SELECT * FROM OPENJSON(@JsonData) WITH( BillName NVARCHAR(50) '$.BillName' , --单号 SendDate Datetime '$.SendDate', --送检时间 ShippingDate datetime '$.ShippingDate', --出货日期 PackagingDate datetime '$.PackagingDate', --打包日期 ProductName NVARCHAR(50) '$.ProductName', --料号 Qty NVARCHAR(50) '$.Qty' --数量、 )
多层json解析
declare @JsonData nvarchar(max)= '
{
"ServData":{
"Test":[{
"BillName":"12345765",
"SendDate":"2022-11-10T00:00:00",
"ShippingDate":"2022-11-10T00:00:00",
"PackagingDate":"2022-11-10T00:00:00",
"ProductName":"11111",
"Qty":5
}]
}
}'
SELECT *
FROM OPENJSON(JSON_QUERY(JSON_QUERY(@JsonData, '$.ServData'),'$.Test'))
WITH(
BillName NVARCHAR(50) '$.BillName' , --单号
SendDate Datetime '$.SendDate', --送检时间
ShippingDate datetime '$.ShippingDate', --出货日期
PackagingDate datetime '$.PackagingDate', --打包日期
ProductName NVARCHAR(50) '$.ProductName', --料号
Qty NVARCHAR(50) '$.Qty' --数量、
)