PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Zaktualizuj wartość klucza w tablicy obiektów jsonb

Możesz to zrobić za pomocą kombinacji jsonb funkcje i operatory :

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.

Skrzypce SQL.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zdefiniowana przez użytkownika funkcja PostgreSQL w dialekcie hibernacji zgłasza wyjątek

  2. BŁĄD:niezaspokojone ograniczenia podczas instalacji PostGIS na obrazie Alpine Docker

  3. Błąd:Klucz ... nie występuje w tabeli

  4. Dwóch właścicieli tej samej bazy danych PostgreSQL

  5. Pobierz wartość pola z rekordu, który powoduje, że warunek agregacji jest prawdziwy