使用 OPENJSON 查询时,结果集会模仿 JSON 数组的顺序还是随机顺序?

When querying using OPENJSON, will the result set mimic the order of the JSON array or will the order be random?

假设我有这个 JSON 数组:

[{
    "Field": "1"
}, {
    "Field": "2"
}, {
    "Field": "3"
}]

我在 SQL 服务器的 OpenJSON 查询中使用它。

查询结果集会不会一直和数组顺序一样:

Field
1
2
3

或者它会像任何正常的 Select 查询一样随机吗?

如果 JSON 数组和 OPENJSON() 使用默认模式调用,基于 documentation,结果是 table,列 keyvaluetype 以及 key 列保存指定数组中元素的索引。如果你想得到一个有序集,你应该使用如下语句:

DECLARE @json nvarchar(max) = N'[{ "Field": "1" }, { "Field": "2" }, { "Field": "3" }]'

SELECT [value]
FROM OPENJSON(@json)
ORDER BY CONVERT(int, [key])

-- or

SELECT c.Field
FROM OPENJSON(@json) j
CROSS APPLY OPENJSON(j.[value]) WITH (Field int '$.Field') c
ORDER BY CONVERT(int, j.[key])