sql >> Database teknologi >  >> RDS >> PostgreSQL

Hvordan får man et json-objekt som kolonne i postgresql?

Det kan man ikke "dynamisk". Du skal angive de kolonner, du vil have:

select name, description, id, 
       data ->> 'tax' as tax,
       data ->> 'other_attribute' as other_attribute
from core;
 

Hvis du gør det meget, vil du måske have det i udsigt.

En anden mulighed er at oprette en objekttype i Postgres, der repræsenterer attributterne i din JSON, f.eks.

create type core_type as (id integer, tax numeric, price numeric, code varchar);
 

Du kan derefter caste JSON til den type, og de tilsvarende attributter fra JSON vil automatisk blive konverteret til kolonner:

Med ovenstående type og følgende JSON:{"id": "100", "tax": "4.5", "price": "10", "code": "YXCV"} du kan gøre:

select id, (json_populate_record(null::core_type, data)).*
from core;
 

og det vil returnere:

id | tax | price | code ---+------+-------+----- 1 | 4.50 | 10 | YXCV

Men du skal sørge for, at hver JSON-værdi kan castes til typen af ​​det tilsvarende objektfelt.

Hvis du ændrer objekttypen, vil enhver forespørgsel, der bruger den, automatisk blive opdateret. Så du kan administrere de kolonner, du er interesseret i, gennem en central definition.



  1. mysql for mange indekser?

  2. Sådan uploader du flere billeder ved hjælp af codeigniter

  3. hvordan man samler 2 borde

  4. Type mismatch:kan ikke konvertere fra java.util.Date til java.sql.Date