2015-03-03 10 views
6

Ho una tabella nel mio db che ha una colonna contenente record json.Utilizzare json_populate_recordset senza creare una tabella?

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

vorrei ottenere qualcosa del genere:

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

ma sto avendo difficoltà a raggiungere la query di lavorare:

select json_populate_recordset(json_records) from my_table 

I pochi esempi che ho visto con json_populate_recordset inserisci i risultati in una tabella, ma sto solo cercando di restituire i risultati. C'è un modo per farlo senza creare un nuovo tavolo?

+0

Potrebbe puntare a qualsiasi altro bene esempi che hai trovato? Sto scoprendo che il mondo sembra essere un po 'di luce sui documenti per lavorare con questo tipo di operazioni json nei postgres. –

risposta

6

si deve creare un nuovo tipo di passare alla funzione (si noti che, come la json_populate restituisce un json_type è necessario utilizzare (row).* notazione per ottenere singoli campi):

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

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