2015-03-03 19 views
6

Tôi có một bảng trong db của tôi có một cột chứa các bản ghi json.Sử dụng json_populate_recordset mà không cần tạo bảng?

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

Tôi muốn để có được một cái gì đó như thế này:

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

nhưng tôi đang gặp khó khăn nhận được truy vấn để làm việc:

select json_populate_recordset(json_records) from my_table 

Vài ví dụ tôi đã nhìn thấy sử dụng json_populate_recordset chèn kết quả vào một bảng, nhưng tôi chỉ đang cố gắng trả lại kết quả. Có cách nào để làm điều này mà không cần tạo một bảng mới?

+0

bạn có thể trỏ đến bất kỳ tốt khác ví dụ bạn đã tìm thấy? Tôi nhận thấy rằng thế giới dường như là một chút ánh sáng trên các tài liệu để làm việc với những loại hoạt động json này ở bưu điện. –

Trả lời

6

Bạn phải tạo một kiểu mới để vượt qua các chức năng (lưu ý rằng khi json_populate trả về một json_type bạn phải sử dụng (row).* ký hiệu để có được các lĩnh vực cá nhân):

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

SELECT id, (json_populate_recordset(null::json_type, json_records)).* FROM my_table; 
Các vấn đề liên quan