我有以下 Json:
{
"archeTypes": [
{
"archeTypeId": 12,
"elements": [
{
"elementId": 6,
"value": "string6"
},
{
"elementId": 7,
"value": "string7"
}
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
DECLARE @json NVARCHAR(MAX);
SET @json='{"archeTypes":[{"archeTypeId":12,"elements":[{"elementId":6,"value":"string6"},{"elementId":7,"value":"string7"}]}]}';
SELECT *
FROM OPENJSON(@json)
WITH (
ArcheTypeId INT '$.archeTypes.archeTypeId',
ElementId INT '$.archeTypes.elements.elementId',
Value NVARCHAR(max) '$.archeTypes.elements.value'
);
Run Code Online (Sandbox Code Playgroud)
这是我想要的表:
| 原型类型ID | 元素ID | 价值 |
|---|---|---|
| 12 | 6 | 字符串6 |
| 12 | 7 | 字符串7 |
如何将 json 转换为表格?
这有帮助吗?(使用cross apply)
DECLARE @json NVARCHAR(MAX);
SET @json='{"archeTypes":[{"archeTypeId":12,"elements":[{"elementId":6,"value":"string6"},{"elementId":7,"value":"string7"}]}]}';
SELECT archeTypes.ArcheTypeId,elements.ElementId,elements.Value
FROM OPENJSON(@json)
WITH
(
archeTypes nvarchar(max) as JSON
) as archeType cross apply
OPENJSON(archeType.archeTypes)
WITH
(
archeTypeId INT,
elements nvarchar(max) as JSON
) as archeTypes cross apply
OPENJSON(archeTypes.elements)
WITH
(
elementId INT,
value nvarchar(max)
) as elements
;
Run Code Online (Sandbox Code Playgroud)