Ekspresi setelah select harus mengevaluasi ke nilai tunggal. Sejak jsonb_to_recordset mengembalikan satu set baris dan kolom, Anda tidak dapat menggunakannya di sana.
Solusinya adalah cross join lateral , yang memungkinkan Anda memperluas satu baris menjadi beberapa baris menggunakan fungsi. Itu memberi Anda satu baris yang select dapat bertindak. Misalnya:
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'
Perhatikan bahwa #>> operator
mengembalikan jenis text , dan #> operator mengembalikan jenis jsonb . Sebagai jsonb_to_recordset mengharapkan jsonb sebagai parameter pertama saya menggunakan #> .
Lihat itu berfungsi di rextester.com