2

假设我有这个 JSON 数组:

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

OpenJSON在 SQL Server 的查询中使用它。

查询结果集是否总是与数组相同的顺序:

Field
1
2
3

或者它会像任何没有 order by 的普通 Select 查询一样是随机的吗?

4

1 回答 1

0

在 JSON 数组和OPENJSON()使用默认模式调用的情况下,根据文档,结果是一个包含列 和 的表,key并且该列包含指定数组中元素的索引。如果你想得到一个有序集合,你应该使用如下语句:valuetypekey

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])
于 2020-02-27T20:56:07.553 回答