修改jsonb的属性
2016-05-27 19:10
507 查看
CREATE FUNCTION jsonb_merge(JSONB, JSONB)
RETURNS JSONB AS $$
WITH json_union AS (
SELECT * FROM JSONB_EACH($1)
UNION ALL
SELECT * FROM JSONB_EACH($2)
) SELECT JSON_OBJECT_AGG(key, value)::JSONB FROM json_union;
$$ LANGUAGE SQL;
UPDATE xxx SET data = jsonb_merge(data,'{"b":3}') WHERE id = 1;
SELECT * FROM xxx;
id | data
----+------------------
1 | {"a": 1, "b": 3}
-- append
UPDATE xxx SET data = jsonb_merge(data,'{"c":4}') WHERE id = 1;
SELECT * FROM xxx;
id | data
----+-------------------------
1 | {"a": 1, "b": 3, "c": 4}
CREATE FUNCTION jsonb_merge(JSONB, JSONB)
RETURNS JSONB AS $$
WITH json_union AS (
SELECT * FROM JSONB_EACH($1)
UNION ALL
SELECT * FROM JSONB_EACH($2)
) SELECT JSON_OBJECT_AGG(key, value)::JSONB
FROM json_union
WHERE key NOT IN (SELECT key FROM json_union WHERE value ='null');
$$ LANGUAGE SQL;
RETURNS JSONB AS $$
WITH json_union AS (
SELECT * FROM JSONB_EACH($1)
UNION ALL
SELECT * FROM JSONB_EACH($2)
) SELECT JSON_OBJECT_AGG(key, value)::JSONB FROM json_union;
$$ LANGUAGE SQL;
UPDATE xxx SET data = jsonb_merge(data,'{"b":3}') WHERE id = 1;
SELECT * FROM xxx;
id | data
----+------------------
1 | {"a": 1, "b": 3}
-- append
UPDATE xxx SET data = jsonb_merge(data,'{"c":4}') WHERE id = 1;
SELECT * FROM xxx;
id | data
----+-------------------------
1 | {"a": 1, "b": 3, "c": 4}
CREATE FUNCTION jsonb_merge(JSONB, JSONB)
RETURNS JSONB AS $$
WITH json_union AS (
SELECT * FROM JSONB_EACH($1)
UNION ALL
SELECT * FROM JSONB_EACH($2)
) SELECT JSON_OBJECT_AGG(key, value)::JSONB
FROM json_union
WHERE key NOT IN (SELECT key FROM json_union WHERE value ='null');
$$ LANGUAGE SQL;
相关文章推荐
- js动画 从一个位置渐渐移动到另外一个位置 通用
- 根据对象的某一属性进行排序的js代码(如:name,age)
- Jsp之一 WEB应用程序概述
- Jsp之一 WEB应用程序概述
- Jsp之一 WEB应用程序概述
- JSONP伪同步请求及如何使用GBK 进行encodeURIComponet 编码
- [RxJS] Transformation operators: delay and delayWhen
- 文章标题
- js一键复制,Clipboard.js:不用Flash实现剪贴板功能的轻量级JavaScript库
- javascript 面向对象基础(三)面向对象的常用属性和方法
- js犀牛书
- irda-objs和irda-obj的差别,烧写一个字母的悲剧
- JavaScript获取URL参数
- JavaScript笔记(3)关于重复的定义和遗漏的定义
- JSP生命周期 ,Servlet生命周期
- DOM设置表格隔行变色js代码及鼠标悬停在哪行,哪行字体就加粗效果
- 编写高质量的 JavaScript 代码(一)
- SP namespace (sp.js)
- js中数字取整,保留小数位
- 使用js获取url里的指定参数