Udtrykkene efter select skal evalueres til en enkelt værdi. Siden jsonb_to_recordset returnerer et sæt rækker og kolonner, du kan ikke bruge det der.
Løsningen er en cross join lateral , som giver dig mulighed for at udvide en række til flere rækker ved hjælp af en funktion. Det giver dig enkelte rækker, der select kan handle på. For eksempel:
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'
Bemærk, at #>> operatør
returnerer typen text , og #> operatør returnerer typen jsonb . Som jsonb_to_recordset forventer jsonb som dens første parameter bruger jeg #> .
Se det fungere på rextester.com