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

Postgresql và jsonb - chèn khóa / giá trị vào mảng nhiều cấp

Sử dụng jsonb_array_elements để hủy kết hợp tất cả các phần tử của mảng, sau đó thêm json bắt buộc và sử dụng jsonb_agg để tổng hợp lại:

with cte as
 (select id,
         jsonb_agg(jsonb_set(val1,
                             '{blocs}',
                             (select jsonb_agg(arr2 || '{"type": "regular"}')
                                from jsonb_array_elements(arr1.val1 - >
                                                          'blocs') arr2)))
    from challenge, 
         jsonb_array_elements(lines) arr1(val1)
   group by 1) 
update challenge 
   set lines = (cte.jsonb_agg) 
  from cte 
 where challenge.id = cte.id

DEMO




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bảng phân vùng PostgreSQL tự quản lý

  2. Nhận các giá trị mặc định của các cột trong bảng trong Postgres?

  3. Với sqlalchemy cách liên kết động với công cụ cơ sở dữ liệu trên cơ sở mỗi yêu cầu

  4. Postgresql regex để khớp với chữ hoa, nhận biết Unicode

  5. danh sách Postgres loại ENUM