SQL Server 2016中的JSON循环
我有以下几个问题SQL Server 2016中的JSON循环,json,sql-server,sql-server-2016,open-json,Json,Sql Server,Sql Server 2016,Open Json,我有以下几个问题 { "href": { "host": "localhost", "port": 2222 }, "name": "20190812", "scheduledStartTime": "2019-08-12T12:22:52.500-04:00", "parameters": { "1251226": { "value": { "instanceID": 219002, "productNam
{
"href": {
"host": "localhost",
"port": 2222
},
"name": "20190812",
"scheduledStartTime": "2019-08-12T12:22:52.500-04:00",
"parameters": {
"1251226": {
"value": {
"instanceID": 219002,
"productName": "product1",
"userID": "admin"
}
},
"1251287": {
"value": {
"sgName": "sg1",
"userID": "admin"
}
}
}
}
我希望迭代JSON并逐个处理每个迭代。
我尝试使用,但给出了JSON的长度作为计数,但不知道如何逐个获取值
在SQL Server 2016中是否可能实现这一点
我已经试过了
Declare @count INT
select @count = COUNT(*)
FROM OPENJSON((select template_data_mapping from template_data_mapping), N'$')
WHILE @count != 0
BEGIN
SELECT @count
SET @count = @count - 1;
END;
现在还不清楚为什么你…想要迭代JSON并逐个处理每个迭代。。。使用WHILE
循环,但解析此JSON的一种可能的基于集合的方法是使用内置的JSON支持:
JSON:
声明:
SELECT
j1.host, j1.port, j1.scheduledStartTime,
j2.[key] AS parameter,
j3.[key], j3.[value]
FROM OPENJSON(@json) WITH (
host varchar(100) '$.href.host',
port int '$.href.port',
name varchar(100) '$.name',
scheduledStartTime varchar(30) '$.scheduledStartTime',
parameters nvarchar(max) '$.parameters' AS JSON
) j1
OUTER APPLY OPENJSON(j1.parameters, '$') j2
OUTER APPLY OPENJSON(j2.[value], '$.value') j3
结果:
host port scheduledStartTime parameter key value
localhost 2222 2019-08-12T12:22:52.500-04:00 1251226 instanceID 219002
localhost 2222 2019-08-12T12:22:52.500-04:00 1251226 productName product1
localhost 2222 2019-08-12T12:22:52.500-04:00 1251226 userID admin
localhost 2222 2019-08-12T12:22:52.500-04:00 1251287 sgName sg1
localhost 2222 2019-08-12T12:22:52.500-04:00 1251287 userID admin
到目前为止你都试了些什么??预期输出是什么??您希望从每次迭代中获得什么数据-可能是来自
参数
JSON数组的值?如果是,您希望如何处理这些值?
host port scheduledStartTime parameter key value
localhost 2222 2019-08-12T12:22:52.500-04:00 1251226 instanceID 219002
localhost 2222 2019-08-12T12:22:52.500-04:00 1251226 productName product1
localhost 2222 2019-08-12T12:22:52.500-04:00 1251226 userID admin
localhost 2222 2019-08-12T12:22:52.500-04:00 1251287 sgName sg1
localhost 2222 2019-08-12T12:22:52.500-04:00 1251287 userID admin