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