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

Cómo convertir postgresql 9.4 jsonb a objeto sin función/lenguaje del lado del servidor

Use jsonb_populate_record() (o json_populate_record() para json ) con un tipo de fila conocido como destino. Puede usar una tabla temporal para registrar un tipo para uso ad-hoc (si no puede usar una existente tabla o tipo compuesto personalizado):

CREATE TEMP TABLE obj(a int, b int, c int, d int);

Entonces:

SELECT t.id, d.*
FROM   test t
     , jsonb_populate_record(null::obj, t.data) d;

O use jsonb_to_record() (o json_to_record() para json ) y proporcione una lista de definición de columna con la llamada:

SELECT t.id, d.*
FROM   test t
     , jsonb_to_record(t.data) d(a int, b int, c int, d int);

O extraer y emitir cada campo individualmente:

SELECT id, (data->>'a')::int AS a, (data->>'b')::int AS b
         , (data->>'c')::int AS c, (data->>'d')::int AS d
FROM   test;

Los tres funcionan para json y jsonb similar. Simplemente use la variante de función respectiva.

Relacionado: