Die Ausdrücke nach select muss zu einem einzelnen Wert ausgewertet werden. Seit jsonb_to_recordset gibt eine Reihe von Zeilen und Spalten zurück, Sie können es dort nicht verwenden.
Die Lösung ist ein cross join lateral , mit dem Sie eine Zeile mithilfe einer Funktion in mehrere Zeilen erweitern können. Das gibt Ihnen einzelne Zeilen, die select wirken kann. Zum Beispiel:
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'
Beachten Sie, dass #>> Betreiber
gibt den Typ text zurück , und #> Der Operator gibt den Typ jsonb zurück . Als jsonb_to_recordset erwartet jsonb Als ersten Parameter verwende ich #> .
Sehen Sie, wie es auf rextester.com funktioniert