Использование json_populate_recordset без создания таблицы?

Вопрос:У меня есть таблица в моем db, в которой есть столбец, содержащий записи json. id | json_records ---+------------- 0 | "[{'x1' : 1234, 'x2' : 5678},{'x1' : 2345, 'x2' : 6789}]' 1 | "[{'x1' : 4321, 'x2' : 8765},{'x1' : 5432, 'x2' : 9876}]' Я хотел бы получить что-то вроде этого: id | x1 |

Вопрос:

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

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, вставляют результаты в таблицу, но я просто пытаюсь вернуть результаты. Есть ли способ сделать это, не создавая новую таблицу?

Лучший ответ:

Вам нужно создать новый тип для передачи функции (обратите внимание, что при возврате json_populate a 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;

Оцените статью
Добавить комментарий