PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Usando funções JSON do Postgres em colunas de tabela


As expressões após select deve avaliar para um único valor. Desde jsonb_to_recordset retorna um conjunto de linhas e colunas, você não pode usá-lo lá.

A solução é uma cross join lateral , que permite expandir uma linha em várias linhas usando uma função. Isso fornece linhas únicas que select pode agir. Por exemplo:
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'

Observe que o #>> operador retorna o tipo text , e o #> operador retorna o tipo jsonb . Como jsonb_to_recordset espera jsonb como seu primeiro parâmetro estou usando #> .

Veja em rextester.com