我有下面的JSON对象。我需要写一个选择查询来获取Object
JSON数组的索引值。类似于获取序列值。
{
"Model": [
{
"ModelName": "Test Model",
"Object": [
{
"ID": 1,
"Name": "ABC",
},
{
"ID": 11,
"Name": "ABCD",
},
{
"ID": 15,
"Name": "ABCDE",
},
]
}]}
预期输出:
Index_Value
1
2
3
3条答案
按热度按时间whhtz7ly1#
如果我没理解错的话,你想得到
Object
JSON数组中项目的索引,你需要使用默认模式的OPENJSON()
,结果是一个包含key
、value
和type
列的表,对于JSON数组,key
列保存数组中每个项目的索引(从0开始):我的天啊
声明:
但如果您想获取
Object
JSON数组中ID
键的值,则语句不同:注意,需要调用两次
OPENJSON()
,因为输入的JSON是嵌套的数组结构,当然,如果Model
JSON数组总是一个元素,可以使用适当的path
来简化语句:最后,要获取
index
、ID
和Name
,应使用以下语句,该语句假定$.Model
JSON数组有多个项,并使用适当的数据类型定义ID
和Name
列:8yparm6h2#
结果:
| 识别号|姓名|
| - ------|- ------|
| 十一|ABCD语言|
p3rjfoxz3#
你可以用crossjoin选择select子句中不需要提及的键列。
在上面的查询中,我从表中交叉连接了JSON字段,并在select语句中获取了特定的键。
和
CONVERT(int, AttsData.[key])
以获取元素的索引