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