Перебор элементов массива json в PostgreSQL

#arrays #json #postgresql

#массивы #json #postgresql

Вопрос:

У меня есть две строки данных JSON из столбца в базе данных postgresql, и это выглядит следующим образом.

 {
  "details":[{"to":"0:00:00","from":"00:00:12"}]
}

{
  "details":[ 
             {"to":"13:01:11","from":"13:00:12"}, 
             {"to":"00:00:12","from":"13:02:11"}
            ]
}
  

Я хочу перебрать детали и получить только значения ключа «from», используя запрос в postgresql.
Я хочу, чтобы это было как

                              from
                           00:00:12
                           13:00:12
                           13:02:11
  

Комментарии:

1. Тип данных столбца — jsonb или json?

2. да, типом данных столбца является jsonb

Ответ №1:

Использовать jsonb_array_elements

 select j->>'from' as "from" from t 
cross join jsonb_array_elements(s->'details') as j;
  

ДЕМОНСТРАЦИЯ

Комментарии:

1. Приведенные выше сведения взяты из двух столбцов, и мне нужно извлечь все остальные столбцы, такие как id, используя ключ «from». из временного интервала между 13:00:00 и 13:03:00.

2. @rakesh : Это ответ на ваш первоначальный вопрос, пожалуйста, рассмотрите возможность задать новый с дополнительными деталями