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

Perbarui nilai kunci dalam array objek jsonb

Anda dapat melakukannya dengan campuran jsonb fungsi dan operator :

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. Gabungkan beberapa pernyataan SELECT

  2. Ganti nama tabel dengan aman menggunakan kolom kunci utama serial

  3. Plpgsql:Bagaimana saya bisa menetapkan nilai ke variabel di bagian deklarasi?

  4. cara mengembalikan DB postgresql tanpa cadangan

  5. Bagaimana cara mengkloning database uji dari produksi satu dalam satu tindakan tunggal?