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