Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.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
计算数组SQL中json的出现次数_Sql_Json_Postgresql - Fatal编程技术网

计算数组SQL中json的出现次数

计算数组SQL中json的出现次数,sql,json,postgresql,Sql,Json,Postgresql,在我的表中,我有一列,其中我将JSON数组保存为字符串,如下所示: [ { "id":0, "stops":[ { "Id":0, "field1":"data1", "field2":"data2" } ], "time":"01:00:00" }, { "id":2, "stops":[ { "Id":0, "field1":"data1",

在我的表中,我有一列,其中我将JSON数组保存为字符串,如下所示:

[
  {
  "id":0,
  "stops":[
     {
        "Id":0,
        "field1":"data1",
        "field2":"data2"
     }
  ],
  "time":"01:00:00"
  },

  {
  "id":2,
  "stops":[
     {
        "Id":0,
        "field1":"data1",
        "field2":"data2"
     }
  ],
  "time":"01:00:00"
  },
]
json_array_elements( cast(your_table.column_name as json))->'Stops'
我想计算这个数组中JSON的数量。数据库位于PostgreSQL 9.6.1中。

您可以使用json\u array\u length()函数进行计数,但如果您的列是文本类型,则需要将该列强制转换为json类型,如下所示:

json_array_length(cast(your_table.column_name as json))
此外,如果您需要访问“stops”字段,可以使用json\u array\u elements()如下操作:

[
  {
  "id":0,
  "stops":[
     {
        "Id":0,
        "field1":"data1",
        "field2":"data2"
     }
  ],
  "time":"01:00:00"
  },

  {
  "id":2,
  "stops":[
     {
        "Id":0,
        "field1":"data1",
        "field2":"data2"
     }
  ],
  "time":"01:00:00"
  },
]
json_array_elements( cast(your_table.column_name as json))->'Stops'
要进一步访问,如“停止”中的字段,您只需再次使用相同的功能:

json_array_elements( (json_array_elements( cast(your_table.column_name as json)))->'Stops')->'field1'

希望我能提供帮助。

在您的示例中,预期输出是2还是4?哪个数据库?(Mysql、sql server等)对不起,数据库在PostgreSQL 9.6.1中,本例中的输出为2。
json\u array\u length()