как получить конкретный элемент index (n-я позиция) из списка значений json в postgres sql

#sql #arrays #json #postgresql

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

Вопрос:

это мой объект json, который уже хранится в моей базе данных postgres 11

[{«user_id»: 0, «user_name»: «», «user_role»: «», «start_timestamp»: «2020-09-08 04:01:31.636848″, » отметка конечного времени»: «2020-09-08 04:01:31.636848″, » hold_timestamp_list»: [], «handover_link»: «», «curr_state»: «Для выделения», «is_complete»: 1, «is_onhold»: 0}, {«user_id»: 910, «user_name»: «INM», «user_role»: «», «start_timestamp»: «2020-09-09 05:11:06.476766″,»end_timestamp»: «», «hold_timestamp_list»: [{«s»: «2020-09-09 05:11:07.359749″, » e»: «»}], «handover_link»: «», «curr_state»: «Разработка», «is_complete»: 0, «is_onhold»:1}]

как я могу получить имя_пользователя из последнего индекса (т.е. индекс 2 , значение =

{«user_id»: 910, «user_name»: «INM», «user_role»: «», «start_timestamp»: «2020-09-09 05:11:06.476766″, » end_timestamp»: «», «hold_timestamp_list»: [{«s»: «2020-09-09 05:11:07.359749», «e»: «»}], «handover_link»: «», «curr_state»: «Разработка», «is_complete»: 0, «is_onhold»: 1}

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

1. Какую версию Postgres вы используете?

Ответ №1:

Вы можете использовать отрицательный индекс для получения последнего элемента массива json, например:

 mycol -> -1
  

Если вам нужно соответствующее имя пользователя:

 mycol -> -1 ->> 'user_id'
  

Или, может быть, вам нужен целочисленный результат:

 (mycol -> -1 ->> 'user_id')::int