postgresql 修改属性
|
up vote2down votefavorite |
From this article, I tried to update or delete property of a JSONB column: CREATE TABLE xxx (id BIGSERIAL, data JSONB); INSERT INTO xxx(data) VALUES( '{"a":1,"b":2}' ); SELECT * FROM data; id | data ----+------------------ 1 | {"a": 1, "b": 2} create the update function: 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; testing: -- replace 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} The question is:
. -- remove UPDATE xxx SET data = jsonb_merge(data,'{"b":null}') WHERE id = 1; SELECT * FROM xxx; id | data ----+----------------- 1 | {"a": 1, "c": 4}
|
|||
|
add a comment |
1 Answer
|
up vote3down voteaccepted |
Question 1 Question 2 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; |
postgresql 修改属性的更多相关文章
- SQL语句处理一些修改、新增、删除、修改属性操作(MySql)
方法一: 直接(手动)去修改数据库名称,数据库表名称,数据库列名称.列属性 方法二: 使用SQL语句去修改 -- 修改表名 ALTER TABLE tableName RENAME newTableN ...
- [Web 前端] Jquery 复制元素,并修改属性, 追加到另一个元素后面
cp from : https://blog.csdn.net/cooledi/article/details/52813668 jquery 复制元素,并修改属性 $('#ID').clone() ...
- JS修改属性,六种数据类型
JS修改属性 一般修改单个属性是通过JS修改的,比较方便.改多个属性通过css样式改更方便. 1.特殊:通过JS修改包含"-"符号的属性,例如margin-top // 特殊 修改 ...
- python基础===修改属性的值
可以以三种不同的方式修改属性的值:直接通过实例进行修改:通过方法进行设置:通过方法进行递增(增加特定的值).下面依次介绍这些方法. class Car(): def __init__(self, ma ...
- jsp——js事件修改属性样式的两种方法(直接赋值、修改属性)、验证表单符合某要求、阻止表单提交、告诉浏览器不要缓存
代码 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncodi ...
- 学习旧岛小程序 (5) observer 函数中修改属性的值
不要在一个属性的 observer 函数中修改属性的值 不然会造成内存泄露 错误代码: properties: { /* 期刊号 */ index: { type: String, observer ...
- 通过反射 修改访问和修改属性的值 Day25
package com.sxt.field; /* * 通过反射拿到属性值 * 修改public属性值 * 修改private属性值 * 缺点:可读性差:代码复杂 * 优点:灵活:可以访问修改priv ...
- spring cloud spring boot JPA 克隆对象修改属性后 无法正常的执行save方法进行保存或者更新
2019-12-1220:34:58 spring cloud spring boot JPA 克隆对象修改属性后 无法正常的执行save方法进行保存或者更新 未解决
- postgresql修改最大连接数
1.合适的最大连接数 used_connections/max_connections在85%左右2.修改最大连接数postgresql最大连接数默认为1001)打开postgresql配置文件vim ...
随机推荐
- 七天学会ASP.NET MVC(1-3)源代码下载
原文路径: 中文: http://www.cnblogs.com/powertoolsteam/p/MVC_one.html 英文: http://www.codeproject.com/Artic ...
- HDU 5572 An Easy Physics Problem (计算几何+对称点模板)
HDU 5572 An Easy Physics Problem (计算几何) 题目链接http://acm.hdu.edu.cn/showproblem.php?pid=5572 Descripti ...
- iOS摇一摇功能、震动功能、简单的摇动动画、生成二维码图片与发送短信等几个功能
有一个开锁的功能,具体的需求就类似于微信的"摇一摇"功能:摇动手机,手机震动,手机上的锁的图片摇动一下,然后发送开锁指令.需求简单,但用到了许多方面的知识. 1.摇一摇 相对这是最 ...
- selenium grid的使用与配置
一.selenium grid的组成与作用:由一个集线器hub和多个客户机node组成,如果你的程序需要在不用的浏览器,不同的操作系统上测试,而且比较多的case需要多线程远程执行,那么一个比较好的测 ...
- ThreadLocal 与 static 变量
ThreadLocal是为解决多线程程序的并发问题而提出的,可以称之为线程局部变量.与一般的变量的区别在于,生命周期是在线程范围内的.static变量是的生命周期与类的使用周期相同,即只要类存在,那么 ...
- CSS兼容的一些问题
DIV+CSS网页布局这是一种趋势,我也开始顺应这股趋势了,不过在使用DIV+CSS网站设计的时候,应该注意css样式兼容不同浏览器问题,特别是对完全使用DIV+CSS设计的网页,就应该更注意IE6 ...
- linux安装包资源库
最近发现了一个很不错的linux的rpm资源库,可以在里面找到rpm安装过程中缺失的资源! 网址:http://pkgs.org/
- 第八十八节,html5+css3pc端固定布局,搜索区,插入大图,搜索框
html5+css3pc端固定布局,搜索区,插入大图,搜索框 设置一个div作为搜索区域 1.宽度为百分之百 2.最小宽度为1263,因为要考虑到手机,等小屏幕缩小后宽度会自适应,导致破坏布局,将最小 ...
- 2、FileOutputStream--->文件输出流(向文件写入数据)
Api介绍 定义 FileOutputStream 用于写入诸如图像数据之类的原始字节的流.要写入字符流,请考虑使用 FileWriter. 构造方法 FileOutputStream(File fi ...
- 3、File类之创建、删除、重命名、判断方法
一般我们调用内置类的方法,都是指调用其成员方法,故而以下几种方法都是File类的成员方法,常用的有以下3种, 分别是 //创建 public boolean createNewFile() publi ...