我有一个查询数据库并将结果存储在 Json 变量中的存储过程。现在我想通过索引遍历 Json 数组以获取特定值。有人可以告诉我如何实现这一目标。下面是我的查询
DECLARE @json NVARCHAR(Max)
DECLARE @name VARCHAR(50) = 'Name'
SET @json = (select name from getalldataView where
SOUNDEX(name) LIKE SOUNDEX(@name) FOR JSON PATH, ROOT('Names'))
DECLARE @i int = 0
WHILE @i < lengthOFArray
BEGIN
SET @i = @i + 1;
SELECT value
FROM OPENJSON(@json, '$.Names[',@i,']');
END
Run Code Online (Sandbox Code Playgroud)
来源在这里
样本数据
{ "type": "MultiPolygon",
"coordinates": [
[
[[40, 40], [20, 45], [45, 30], [40, 40]]
],
[
[[20, 35], [10, 30], [10, 10], [30, 5], [45, 20], [20, 35]],
[[30, 20], [20, 15], [20, 25], [30, 20]]
]
]
}
Run Code Online (Sandbox Code Playgroud)
sql代码
SELECT polygons.[key] as polygon, lines.[key] as line, x, y
FROM OPENJSON(@multipolygon, '$.coordinates') as polygons
CROSS APPLY OPENJSON(polygons.value) as lines
CROSS APPLY OPENJSON(lines.value)
WITH (x float '$[0]', y float '$[1]')
Run Code Online (Sandbox Code Playgroud)
小智 0
当您开始结束查询以选择 openjson 时,您可以再添加一列吗,该值是您的循环索引。因此您可以在 begin end 内添加另一个Where 验证。OpenJSON 读取所有 json 并将其插入到新行。
| 归档时间: |
|
| 查看次数: |
14441 次 |
| 最近记录: |