T-SQL 从 JSON 数组读取
T-SQL read from JSON Array
我有以下JSON
DECLARE @json NVARCHAR(max) = '
{
"source": "one",
"dataSetId":"a3d5-14fda14",
"data": [
{
"FieldId": 10
}
]
}
'
并且需要将值解析为 table。
我试过:
-- 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
应该 return 一次查询中的所有数据。
这个问题有很多解法。其中之一是....
DECLARE @json NVARCHAR(max) = '
{
"source": "one",
"dataSetId":"a3d5-14fda14",
"data": [
{
"FieldId": 10
}
]
}'
SELECT A.* , B.*
FROM OPENJSON(@json)
WITH ( source NVARCHAR(20)
,dataSetId NVARCHAR(50)) A ,
OPENJSON(@json, '$.data')
WITH ( FieldId int '$.FieldId') B
我有以下JSON
DECLARE @json NVARCHAR(max) = '
{
"source": "one",
"dataSetId":"a3d5-14fda14",
"data": [
{
"FieldId": 10
}
]
}
'
并且需要将值解析为 table。
我试过:
-- 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
应该 return 一次查询中的所有数据。
这个问题有很多解法。其中之一是....
DECLARE @json NVARCHAR(max) = '
{
"source": "one",
"dataSetId":"a3d5-14fda14",
"data": [
{
"FieldId": 10
}
]
}'
SELECT A.* , B.*
FROM OPENJSON(@json)
WITH ( source NVARCHAR(20)
,dataSetId NVARCHAR(50)) A ,
OPENJSON(@json, '$.data')
WITH ( FieldId int '$.FieldId') B