Uttrycken efter select måste utvärderas till ett enda värde. Sedan jsonb_to_recordset returnerar en uppsättning rader och kolumner, du kan inte använda den där.
Lösningen är en cross join lateral , som låter dig utöka en rad till flera rader med hjälp av en funktion. Det ger dig enstaka rader som select kan agera på. Till exempel:
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'
Observera att #>> operatör
returnerar typ text , och #> operatorn returnerar typen jsonb . Som jsonb_to_recordset förväntar sig jsonb som första parameter använder jag #> .
Se hur det fungerar på rextester.com