SQL解析json(包含单层解析、多层解析)解析的数据可直接存到表中
单层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' --数量、 )