我对Json和SQL Server真的很陌生。由于SQL Server 2016可以支持Json值,因此我手头有一项任务。
我有一个带有CustomeID (int)字段的SQL表&另一个字段保存了一个json数组值,该值保存了属于那个惟一客户的不同元素。
例如:
Customer ID | JsonCol
55 | [{"Id":"12","Height":"150","Weight":"75","Colour":"White"},
{"Id":"15","Height":"160","Weight":"85","Colour":"Brown"}]
65 | [{"Id":"16","Height":"155","Weight":"65","Colour":"Red"},
{"Id":"20","Height":"167","Weight":"55","Colour":"Black"}]
我想在SQL Server中做一个查询,得到以下结果,我不知道如何在其中插入表。但基本上,对于数组中Json字段中的每个数据组合,输出都应该重复Customer
CustomerID | ID | Height | Weight | Colour
55 | 12 | 150 | 75 | White
55 | 15 | 160 | 85 | Brown
65 | 16 | 155 | 65 | Red
65 | 20 | 167 | 55 | Black
有人能给我一个从哪里开始的想法吗?我已经尝试了微软所有关于Json支持的文章。
提前谢谢你。
发布于 2018-05-31 09:23:37
使用OPENJSON
with the default output获取数组元素,然后使用OPENJSON
output with an explicit structure获取元素。将其与CROSS APPLY
s放在一起。
SELECT CustomerID,
x.Id,
x.Height,
x.Weight,
x.Colour
FROM Customer C
CROSS APPLY (SELECT *
FROM OPENJSON(C.JsonCol)
CROSS APPLY OPENJSON(value)
WITH (Id integer '$.Id',
Height integer '$.Height',
Weight integer '$.Weight',
Colour nvarchar(8) '$.Colour')) x;
https://stackoverflow.com/questions/50614634
复制相似问题