De uitdrukkingen na select moet evalueren tot een enkele waarde. Sinds jsonb_to_recordset retourneert een set rijen en kolommen, je kunt het daar niet gebruiken.
De oplossing is een cross join lateral , waarmee u een rij kunt uitbreiden naar meerdere rijen met behulp van een functie. Dat geeft je enkele rijen die select kan handelen. Bijvoorbeeld:
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'
Merk op dat de #>> operator
retourneert type text , en de #> operator retourneert type jsonb . Als jsonb_to_recordset verwacht jsonb als eerste parameter gebruik ik #> .
Zie hoe het werkt op rextester.com