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