sql >> Databasteknik >  >> RDS >> PostgreSQL

Uppdatera nyckelvärde i jsonb-arrayen av objekt

Du kan göra det med en blandning av jsonb funktioner och operatörer :

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-fiol.



  1. Oracle Fuzzy Search med mellanslag

  2. Trigger som uppdaterar bara den infogade raden

  3. Kan jag gå med över datakällor i SSRS?

  4. Hur man tar bort dubbletter från en tabell i Oracle