假设我有这个 JSON 数组:
[{
"Field": "1"
}, {
"Field": "2"
}, {
"Field": "3"
}]
我OpenJSON
在 SQL Server 的查询中使用它。
查询结果集是否总是与数组相同的顺序:
Field
1
2
3
或者它会像任何没有 order by 的普通 Select 查询一样是随机的吗?
假设我有这个 JSON 数组:
[{
"Field": "1"
}, {
"Field": "2"
}, {
"Field": "3"
}]
我OpenJSON
在 SQL Server 的查询中使用它。
查询结果集是否总是与数组相同的顺序:
Field
1
2
3
或者它会像任何没有 order by 的普通 Select 查询一样是随机的吗?
在 JSON 数组和OPENJSON()
使用默认模式调用的情况下,根据文档,结果是一个包含列 和 的表,key
并且该列包含指定数组中元素的索引。如果你想得到一个有序集合,你应该使用如下语句:value
type
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])