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

Làm thế nào để chuyển đổi postgresql 9.4 jsonb thành đối tượng mà không cần hàm / ngôn ngữ phía máy chủ

Sử dụng jsonb_populate_record() (hoặc json_populate_record() cho json ) với loại hàng nổi tiếng là mục tiêu. Bạn có thể sử dụng bảng tạm thời để đăng ký một loại để sử dụng đặc biệt (nếu bạn không thể sử dụng hiện có bảng hoặc loại kết hợp tùy chỉnh):

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

Sau đó:

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

Hoặc sử dụng jsonb_to_record() (hoặc json_to_record() cho json ) và cung cấp danh sách định nghĩa cột với lệnh gọi:

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

Hoặc trích xuất và truyền từng trường riêng lẻ:

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

Cả ba đều hoạt động cho jsonjsonb như nhau. Chỉ cần sử dụng biến thể hàm tương ứng.

Có liên quan:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tôi có thể lưu trữ mảng trong hstore với Rails không

  2. PG ::Lỗi:LỖI:chuỗi byte không hợp lệ để mã hóa UTF8:0xfc

  3. tìm sách tương tự dựa trên sách đã mua dựa trên từ khóa meta sách

  4. Mô hình Django cho chế độ xem Postgres

  5. Java JDBC bỏ qua setFetchSize?