Подсчитать вхождение json в массив SQL - PullRequest
0 голосов
/ 05 мая 2018

В моей таблице есть столбец, в котором я сохраняю массив 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 голосов
/ 07 мая 2018

Вы можете использовать функцию 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'

И чтобы получить еще больший доступ, например, к полям внутри «stop», вы можете просто снова использовать ту же функцию:

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

Надеюсь, я смогу помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...