PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

PostgreSQL сравнява два jsonb обекта

АКТУАЛИЗИРАНО

CREATE OR REPLACE FUNCTION jsonb_diff_val(val1 JSONB,val2 JSONB)
RETURNS JSONB AS $$
DECLARE
  result JSONB;
  v RECORD;
BEGIN
   result = val1;
   FOR v IN SELECT * FROM jsonb_each(val2) LOOP
     IF result @> jsonb_build_object(v.key,v.value)
        THEN result = result - v.key;
     ELSIF result ? v.key THEN CONTINUE;
     ELSE
        result = result || jsonb_build_object(v.key,'null');
     END IF;
   END LOOP;
   RETURN result;
END;
$$ LANGUAGE plpgsql;

Заявка:

SELECT jsonb_diff_val(
    '{"a":"aaa", "b":"bbb", "c":"ccc"}'::jsonb,
    '{"a":"aaa", "b":"jjj", "d":"ddd"}'::jsonb
);
            jsonb_diff_val             
---------------------------------------
 {"b": "bbb", "c": "ccc", "d": "null"}
(1 row)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да добавите персонализиран доставчик на DB, за да бъде достъпен в Visual Studio?

  2. Използване на една и съща колона няколко пъти в клаузата WHERE

  3. Избор по месец в PostgreSQL

  4. TemplateSyntaxError:Уловена ImportError по време на изобразяване:не може да импортира име utils

  5. Какво мислите за базите данни на Postgres и Firebird?