【发布时间】:2017-10-05 08:35:38
【问题描述】:
我有以下JSON
DECLARE @json NVARCHAR(max) = '
{
"source": "one",
"dataSetId":"a3d5-14fda14",
"data": [
{
"FieldId": 10
}
]
}
'
并且需要将值解析到表中。
我试过了:
-- meta
SELECT *
FROM OPENJSON(@json)
WITH ( source NVARCHAR(20)
,dataSetId NVARCHAR(50)
,FieldId INT '$.data.FieldId'
)
-- array
SELECT *
FROM OPENJSON(@json, '$.data')
WITH ( source NVARCHAR(20)
,dataSetId NVARCHAR(50)
,FieldId int '$.FieldId'
)
它可以获取source 和dataSetId 列或获取FieldId 列,但我仍然无法合并这两种解决方案,以解析非数组和数组数据。
SELECT 应该在一个查询中返回所有数据。
【问题讨论】:
-
如果您尝试过,那么您会遇到什么 sql 错误。
-
是的,我做到了。您可以看到问题中的查询。没有错误。 .. 它可以工作,但不会在一次查询中返回 JSON 中的所有数据。
-
您是否应该尝试通过定义临时表并将结果存储到临时表中,即#myResultTable 并将其传递给 OPENJSON
标签: sql-server json tsql parsing sql-server-2016