Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取Json数组计数的SQL查询_Sql_Json_Sql Server 2019 - Fatal编程技术网

获取Json数组计数的SQL查询

获取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" }, ] }]} 我尝试了下面的查询,但

我有下面的Json对象。如何获取对象数组的计数

{
  "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函数。