获取Json数组计数的SQL查询
我有下面的Json对象。如何获取对象数组的计数获取Json数组计数的SQL查询,sql,json,sql-server-2019,Sql,Json,Sql Server 2019,我有下面的Json对象。如何获取对象数组的计数 { "Model": [ { "ModelName": "Test Model", "Object": [ { "ID": 1, "Name": "ABC" }, { "ID": 11, "Name": "ABCD" }, ] }]} 我尝试了下面的查询,但
{
"Model": [
{
"ModelName": "Test Model",
"Object": [
{
"ID": 1,
"Name": "ABC"
},
{
"ID": 11,
"Name": "ABCD"
},
]
}]}
我尝试了下面的查询,但似乎JSON_长度不可用
SELECT ModelName,
JSON_LENGTH(JsonData, '$.Model[0].Object')
FROM TabA
预期输出应为
ModelName COUNT
Test Model 2
如果您有有效的JSON(此时在一个右大括号(}
)后面有一个尾随逗号(,
)),那么您可以使用OPENJSON
和COUNT
:
DECLARE @JSON nvarchar(MAX) = N'{
"Model": [
{
"ModelName": "Test Model",
"Object": [
{
"ID": 1,
"Name": "ABC"
},
{
"ID": 11,
"Name": "ABCD"
}
]
}]}';
SELECT M.ModelName,
COUNT(O.[key]) AS [Count]
FROM (VALUES(@JSON))V(J)
CROSS APPLY OPENJSON(V.J)
WITH(ModelName varchar(20) '$.Model[0].ModelName',
[Object] nvarchar(MAX) '$.Model[0].Object' AS JSON) M
CROSS APPLY OPENJSON(M.[Object]) O
GROUP BY M.ModelName;
您提供的JSON无效;除非您有有效的JSON,否则将无法使用任何JSON函数。