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