Les expressions après select
doit correspondre à une seule valeur. Depuis jsonb_to_recordset
renvoie un ensemble de lignes et de colonnes, vous ne pouvez pas l'utiliser ici.
La solution est un cross join lateral
, qui vous permet de développer une ligne en plusieurs lignes à l'aide d'une fonction. Cela vous donne des lignes uniques qui select
peut agir sur. Par exemple :
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'
Notez que le #>>
opérateur
renvoie le type text
, et le #>
l'opérateur renvoie le type jsonb
. Comme jsonb_to_recordset
attend jsonb
comme premier paramètre, j'utilise #>
.
Regardez-le fonctionner sur rextester.com