PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Utilizzo delle funzioni JSON di Postgres sulle colonne della tabella

Le espressioni dopo select deve valutare un unico valore. Da jsonb_to_recordset restituisce un insieme di righe e colonne, non puoi utilizzarlo lì.

La soluzione è un cross join lateral , che consente di espandere una riga in più righe utilizzando una funzione. Questo ti dà righe singole che select può agire. Ad esempio:

select  *
from    journal j
cross join lateral
        jsonb_to_recordset(j.data#>'{context, data, files}') as d(id int, name text)
where   j.id = 'ap32bbofopvo7pjgo07g'

Tieni presente che #>> operatore restituisce il tipo text e il #> l'operatore restituisce il tipo jsonb . Come jsonb_to_recordset si aspetta jsonb come primo parametro sto usando #> .

Guarda che funziona su rextester.com