Запрос Postgres SQL JSON Колонка - PullRequest
       6

Запрос Postgres SQL JSON Колонка

0 голосов
/ 01 апреля 2020

У меня есть столбец json (json_col) в базе данных postgres со следующей структурой:

{
   "event1":{
      "START_DATE":"6/18/2011",
      "END_DATE":"7/23/2011",
      "event_type":"active with prior experience"
   },
   "event2":{
      "START_DATE":"8/20/11",
      "END_DATE":"2/11/2012",
      "event_type":"active"
   }
}

[пример структуры таблицы] [1]

Как можно Я делаю оператор выбора в postgres, чтобы вернуть start_date и end_date с оператором where, где "event_type" вроде "active"?

Попытка запроса:

select person_id, json_col#>>'START_DATE' as event_start, json_col#>>'END_DATE' as event_end
from data
where json_col->>'event_type' like '%active%'; 

Возвращает пустые столбцы.

Ожидаемый ответ:

event_start  
6/18/2011
8/20/2011

1 Ответ

1 голос
/ 01 апреля 2020

Звучит так, как будто вы хотите снять структуру json, игнорируя клавиши верхнего уровня и просто получая значения верхнего уровня. Вы можете сделать это с помощью jsonb_each, просматривая результирующий столбец с именем 'value'. Вы бы поместили вызов функции в список FROM как боковое соединение (но поскольку это вызов функции, вам не нужно указывать ключевое слово LATERAL, оно неявное)

select value->>'START_DATE' from data, jsonb_each(json_col) 
    where value->>'event_type' like '%active%';
...