sql >> Databasteknik >  >> RDS >> PostgreSQL

Hur man konverterar postgresql 9.4 jsonb till objekt utan funktion/serversidaspråk

Använd jsonb_populate_record() (eller json_populate_record() för json ) med en välkänd radtyp som mål. Du kan använda en tillfällig tabell för att registrera en typ för ad hoc-användning (om du inte kan använda en befintlig tabell eller anpassad sammansatt typ):

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

Sedan:

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

Eller använd jsonb_to_record() (eller json_to_record() för json ) och tillhandahåll en kolumndefinitionslista med anropet:

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

Eller extrahera och kasta varje fält individuellt:

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

Alla tre fungerar för json och jsonb lika. Använd bara respektive funktionsvariant.

Relaterat:



  1. Postgres DB Size Command

  2. SQL INSERT INTO-sats

  3. Logiska databassäkerhetskopieringar med MySQL-skal

  4. SQL Server-motsvarighet till WM_CONCAT-funktionen