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

时间:2018-05-04 21:09:13

标签: sql json postgresql

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

[
  {
  "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"
  },
]

我想计算这个数组中jsons的数量。该数据库位于PostgreSQL 9.6.1中。

1 个答案:

答案 0 :(得分:1)

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

json_array_length(cast(your_table.column_name as json))

此外,如果您需要访问"停止"字段,您可以使用 json_array_elements() 并按照以下方式执行操作:

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'

希望我能提供帮助。