2015-03-03 3 views
6

У меня есть таблица в моем db, в которой есть столбец, содержащий записи json.Использование json_populate_recordset без создания таблицы?

id | json_records 
---+------------- 
0 | "[{'x1' : 1234, 'x2' : 5678},{'x1' : 2345, 'x2' : 6789}]' 
1 | "[{'x1' : 4321, 'x2' : 8765},{'x1' : 5432, 'x2' : 9876}]' 

Я хотел бы получить что-то вроде этого:

id | x1 | x2 
---+------+----- 
0 | 1234 | 5678 
0 | 2345 | 6789 
1 | 4321 | 8765 
1 | 5432 | 9876 

, но у меня возникли проблемы при получении запроса на работу:

select json_populate_recordset(json_records) from my_table 

немногих примеров я видел, используя json_populate_recordset вставьте результаты в таблицу, но я просто пытаюсь вернуть результаты. Есть ли способ сделать это, не создавая новую таблицу?

+0

Не могли бы вы указать на какой-либо другой пользы примеры, которые вы нашли? Я обнаружил, что мир, похоже, немного освещает документы для работы с этими видами операций json в postgres. –

ответ

6

Вы должны создать новый тип, чтобы перейти к функции (обратите внимание, что в качестве json_populate возвращает json_type вы должны использовать (row).* обозначения для получения отдельных полей):

CREATE type json_type AS (x1 int, x2 int); 

SELECT id, (json_populate_recordset(null::json_type, json_records)).* FROM my_table;