PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Làm thế nào để lấy một đối tượng json làm cột trong postgresql?

Bạn không thể làm điều đó một cách "động". Bạn cần chỉ định các cột bạn muốn có:

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

Nếu bạn làm điều đó nhiều, bạn có thể muốn đưa điều đó vào chế độ xem.

Một tùy chọn khác là tạo một loại đối tượng trong Postgres đại diện cho các thuộc tính trong JSON của bạn, ví dụ:

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

Sau đó, bạn có thể truyền JSON sang kiểu đó và các thuộc tính tương ứng từ JSON sẽ tự động được chuyển đổi thành cột:

Với loại trên và JSON sau:{"id": "100", "tax": "4.5", "price": "10", "code": "YXCV"} bạn có thể làm:

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

và nó sẽ trả về:

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

Nhưng bạn cần đảm bảo rằng mọi giá trị JSON đều có thể được ép kiểu của trường đối tượng tương ứng.

Nếu bạn thay đổi loại đối tượng, bất kỳ truy vấn nào sử dụng nó sẽ tự động được cập nhật. Vì vậy, bạn có thể quản lý các cột mà bạn quan tâm, thông qua một định nghĩa trung tâm.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Truy vấn nhiều bảng với các mối quan hệ phức tạp

  2. Lưu trữ json, jsonb, hstore, xml, enum, ipaddr, v.v. không thành công với cột x thuộc kiểu json nhưng biểu thức có kiểu ký tự khác nhau

  3. PostgreSQL:Làm thế nào để thoát '?

  4. Tại sao '2'> '10'?

  5. Docker container tắt do lỗi 'thư mục dữ liệu có quyền sở hữu sai' khi được thực thi trong windows 10