PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Bagaimana cara mendapatkan objek json sebagai kolom di postgresql?

Anda tidak dapat melakukan itu "secara dinamis". Anda perlu menentukan kolom yang ingin Anda miliki:

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

Jika Anda sering melakukannya, Anda mungkin ingin menampilkannya.

Opsi lain adalah membuat tipe objek di Postgres yang mewakili atribut di JSON Anda, mis.

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

Anda kemudian dapat mentransmisikan JSON ke jenis itu dan atribut yang sesuai dari JSON akan secara otomatis dikonversi ke kolom:

Dengan jenis di atas dan JSON berikut:{"id": "100", "tax": "4.5", "price": "10", "code": "YXCV"} Anda dapat melakukan:

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

dan itu akan kembali:

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

Tetapi Anda perlu memastikan bahwa setiap nilai JSON dapat dilemparkan ke jenis bidang objek yang sesuai.

Jika Anda mengubah tipe objek, setiap kueri yang menggunakannya akan diperbarui secara otomatis. Jadi Anda dapat mengelola kolom yang Anda minati, melalui definisi sentral.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Python + PostgreSQL + ascii aneh =kesalahan penyandian UTF8

  2. Buat tabel dinamis dari fungsi di PostgreSQL

  3. Temukan baris yang memiliki nilai yang sama di satu kolom dan nilai lain di kolom lain?

  4. Bagaimana sisi FROM dari UPDATE berhubungan dengan tabel yang ditargetkan untuk UPDATE?

  5. Perbedaan kinerja:kondisi ditempatkan pada klausa INNER JOIN vs WHERE