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

Cập nhật giá trị khóa trong mảng đối tượng jsonb

Bạn có thể làm điều đó với sự kết hợp của jsonb chức năng và toán tử :

UPDATE company c
SET    log = sub.log2
FROM  (
   SELECT *
   FROM   company c
   CROSS  JOIN LATERAL (
      SELECT jsonb_agg(jsonb_set(l, '{oldvalue}', to_jsonb(rtrim(l->>'oldvalue')))) AS log2
      FROM   jsonb_array_elements(c.log) l
      ) sub
   WHERE  jsonb_typeof(log) = 'array'  -- exclude NULL and non-arrays
   ) sub
WHERE  c.code =  sub.code   -- assuming code is unique
AND    c.log  <> sub.log2;  -- only where column actually changed.

SQL Fiddle.



  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ách tính trung bình điểm đánh giá sản phẩm bằng cách sử dụng activerecord và POSTGRES

  2. Lumen - Tạo kết nối cơ sở dữ liệu trong thời gian chạy

  3. Cloud9 + rails + sử dụng Postgresql

  4. PostgreSQL - INNER THAM GIA hai bảng với GIỚI HẠN

  5. Các truy vấn PostgreSQL không bị giết khi tắt máy chủ ứng dụng