PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как да получите json обект като колона в postgresql?

Не можете да направите това "динамично". Трябва да посочите колоните, които искате да имате:

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

Ако правите това често, може да искате да поставите това в изглед.

Друг вариант е да създадете тип обект в Postgres, който представлява атрибутите във вашия JSON, напр.

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

След това можете да прехвърлите JSON към този тип и съответните атрибути от JSON автоматично ще бъдат преобразувани в колони:

С горния тип и следния JSON:{"id": "100", "tax": "4.5", "price": "10", "code": "YXCV"} можете да направите:

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

и ще върне:

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

Но трябва да сте сигурни, че всяка JSON стойност може да се преобразува към типа на съответното обектно поле.

Ако промените типа на обекта, всяка заявка, използваща го, автоматично ще се актуализира. Така че можете да управлявате колоните, които ви интересуват, чрез централна дефиниция.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Предаване на C променливи в SQL команда

  2. Хибернация запазване на потребителския модел в Postgres

  3. PostgreSQL:Експортиране на данни от SQL Server 2008 R2 към PostgreSQL 9.5

  4. Преобразуване на UTC часова зона в postgresql в EST (местно време)

  5. CURRENT_TIMESTAMP в милисекунди