sql >> Base de Datos >  >> RDS >> PostgreSQL

Uso de las funciones JSON de Postgres en las columnas de la tabla

Las expresiones después de select debe evaluar a un solo valor. Desde jsonb_to_recordset devuelve un conjunto de filas y columnas, no puede usarlo allí.

La solución es un cross join lateral , que le permite expandir una fila en varias filas usando una función. Eso le da filas individuales que select puede actuar sobre. Por ejemplo:

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'

Tenga en cuenta que #>> operador devuelve tipo text y el #> el operador devuelve el tipo jsonb . Como jsonb_to_recordset espera jsonb como su primer parámetro estoy usando #> .

Véalo funcionando en rextester.com