Postgresql Json Sql
a detailed website about json sql query; official website: here, chinese version: here
Json query: ->element_name or index; and can be sequential;
select column::json->'element' as readdata from schema.tableName;
select column1::json->'element1' as readdata1, column2::json->'element2' as readdata2 from schema.tableName;
using json function to do operations.
select description::json->'data'->(JSON_ARRAY_LENGTH(description::json->'data')-1)->0 as readtime from leanheat.lh_demo_ecl_aggregatedata
Examples of json operation(增删改查):from here
CREATE TABLE leanheat.TActivity (
id bigint PRIMARY KEY,-- 活动id
title character varying(128) NOT NULL,-- 活动名称
pricepackage jsonb NOT NULL -- 价格套餐,格式如:[{"packagename":"成人票","price":25,"stock":1000},{"packagename":"儿童票(12岁以下)","price":15,"stock":1000}]
)WITH (
OIDS=FALSE
);
insert data; and update one data in jsonb field.
insert into leanheat.TActivity values(1,'演出活动标题1','[{"packagename":"成人票","price":189,"stock":100},{"packagename":"儿童票(12岁以下)","price":66,"stock":20},{"packagename":"成人+儿童套票","price":128,"stock":10}]');
update leanheat.tactivity set pricepackage = pricepackage || '{"packagename":"成人票新增3","price":189,"stock":100}' where id = 1;
update;
update leanheat.lh_demo_ecl_aggregateData set description = jsonb_insert(description, '{description, data}', '{"data":[1568898000,29.232178],"data":[1568901600,29.232]}'::jsonb, true)
where description::jsonb->>'series_id' = 'TE8'
jsonb_insert(
target jsonb, -> The JSONB data target.
path text[], -> The path on the target where the new_value will be inserted.
new_value jsonb, -> The new value/key to be inserted.
[insert_after boolean] -> If true, new_value will be inserted after the target path.
And before, if it´s set to false. Default is false.
)
update leanheat.tactivity set pricepackage = jsonb_set(pricepackage,'{0}','{"price":189,"packagename":"成人票00","stock":100}',false) where id = 1
update leanheat.tactivity set pricepackage = jsonb_set(pricepackage,'{0,packagename}','"成人票000"',false) where id = 1
delete content of tables.
delete from leanheat.tactivity; --delete the content of table.
insert into leanheat.TActivity values(1,'演出活动标题1','[{"packagename":"成人票","price":189,"stock":100},{"packagename":"儿童票(5-15岁)","price":66,"stock":20},{"packagename":"成人+儿童套票","price":128,"stock":10}]');
insert into leanheat.TActivity values(2,'演出活动标题2','[{"packagename":"成人票","price":99,"stock":100},{"packagename":"儿童票(3-5岁)","price":58,"stock":20},{"packagename":"成人+儿童套票","price":99,"stock":10}]');
drop table;
DROP TABLE table_name; --drop table.
Indexing; 简介
CREATE INDEX index_name ON table_name (id); -- create index in a column (id).
要删除索引,请使用 DROP INDEX 命令。可以随时向表中添加索引或从表中删除索引。
One problem of jsonb_insert();
update leanheat.lh_demo_ecl_aggregateData set description = jsonb_insert(description, '{data}', '{"data":[[1568898000,29.232178],[1568901600,29.232]]}'::jsonb, true)
where description::jsonb->>'series_id' = 'TE8'
ERROR: cannot replace existing key HINT: Try using the function jsonb_set to replace key value. 因为已经有data的key了,所以不能再插入key为data的数据了。
update leanheat.lh_demo_ecl_aggregateData set description = jsonb_insert(description, '{data,0}', '{"data":[[1568898000,29.232178],[1568901600,29.232]]}'::jsonb, true)
where description::jsonb->>'series_id' = 'TE8'
改变路径,则会变为以下结果:

加引号的方式,会为如下后面的结果。
update leanheat.lh_demo_ecl_aggregateData set description = jsonb_insert(description, '{data,0}', '"[1568898000,29.232178],[1568901600,29.232]"'::jsonb, true)
where description::jsonb->>'series_id' = 'TE8'

改变插入方式为插入数组。
update leanheat.lh_demo_ecl_aggregateData set description = jsonb_insert(description, '{data,0}', to_jsonb(ARRAY[[1568898000,29.232178],[1568901600,29.232]]), true)
where description::jsonb->>'series_id' = 'TE9'

只插入一个数组,成功!
update leanheat.lh_demo_ecl_aggregateData set description = jsonb_insert(description, '{data,0}', to_jsonb(ARRAY[1568898000,29.232178]), true)
where description::jsonb->>'series_id' = 'TE9'
Postgresql Json Sql的更多相关文章
- PostgreSQL JSON 处理
1.JSON类型 PostgreSQL支持JSON和JSONB.这两种类型在使用上几乎完全一致,主要区别是: (1)JSON类型把输入的数据原封不动的存放到数据库中.JSONB类型在存放时把JS ...
- MySQL数据导出为Excel, json,sql等格式
MySQL数据经常要导出为Excel, json,sql等格式,通过步骤都很多,麻烦,现在通过Treesoft可以方便的导出你要的数据格式. 1.在线执行SQL,在数据列表中有相应按钮,方便的将数据导 ...
- 关于PostgreSQL的SQL注入必知必会
一.postgresql简介 postgresql是一款关系型数据库,广泛应用在web编程当中,由于其语法与MySQL不尽相同,所以其SQL注入又自成一派. 二.postgresql的SQL注入:(注 ...
- PostgreSQL JSON函数
https://www.postgresql.org/docs/9.6/static/functions-json.html PostgreSQL 9.6.1 Documentation Prev U ...
- PostgreSQL Json字段作为查询条件案例
业务扩展字段在数据库中经常会使用json格式的数据来存储,这就涉及到一个头疼的问题,假设要使用扩展字段里的某个值作为查询条件怎么办,原来PostgreSQL本身就支持这种查询方式. 例子:假设业务扩展 ...
- Java ->在mybatis和PostgreSQL Json字段作为查询条件的解决方案
Date:2019-11-15 读前思考: 你没想到解决办法? PostgreSQL 数据库本身就支持还是另有解决办法? 说明:首先这次数据库使用到Json数据类型的原因,这次因为我们在做了一个app ...
- 玩转Web之Json(二)----jquery easy ui + Ajax +Json+SQL实现前后台数据交互
最近在学Json,在网上也找过一些资料,觉得有点乱,在这里,我以easy ui的登录界面为例来说一下怎样用Json实现前后台的数据交互 使用Json,首先需要导入一些jar包,这些资源可以在网上下载到 ...
- postgresql 日常sql
查看服务进程: select pid,usename,client_addr,client_port from pg_stat_activity; 查看当前数据库实例的版本: select ve ...
- 不得不补:PHP的JSON, SQL
不管怎么说,还是得感谢慕课网,提供了很多免费的视频教学. 学习自: https://www.imooc.com/view/68 前端页面: <!DOCTYPE html> <html ...
随机推荐
- 移动app
什么是移动App开发[重点] 苹果上的软件是如何开发出来的:使用IOS平台的开发工具和开发语言进行设计开发的!苹果上的开发语言:OC.Swift 安卓平台上的软件又是如何开发出来的:使用Java这么语 ...
- Linux Samba文件共享服务,安装与案例配置
Samba服务器安装和配置 1:安装Samba服务器软件包 [root@localhost ~]# rpm -qa | grep samba [root@localhost ~]# yum -y in ...
- React HOC(高阶组件)
一.定义 高阶函数:函数接受函数作为输入,或者输出一个函数. 高阶组件:接受React组件作为输入,或是输出一个组件.即hocFactory:: W: React.Component => E: ...
- P5788 【模板】单调栈
---------------- 链接:Miku ---------------- 单调栈模板终于不是一堆蓝题了!!!!!!!!!!!! 单调栈,就是单调的栈,栈内元素都是单调的. 题目要求我们求出来 ...
- nginx: [warn] conflicting server name "aaa.7yule.cn" on 0.0.0.0:80, ignored
故障现象: 修改nginx配置参数后,使用nginx -t检查配置,出现告警提示 nginx: [warn] conflicting server name "aaa.7yule.cn&qu ...
- opencv —— boxFilter、blur、GaussianBlur、medianBlur、bilateralFilter 线性滤波(方框滤波、均值滤波、高斯滤波)与非线性滤波(中值滤波、双边滤波)
图像滤波,指在尽量保留图像细节特征的条件下对目标图像的噪声进行抑制,是图像与处理中不可缺少的操作. 邻域算子,指利用给定像素及其周围的像素值,决定此像素的最终输出值的一种算子.线性邻域滤波器就是一种常 ...
- disabled属性对form表单提交的影响
在form表单里,如果对input加入disabled="disabled"或disabled="true"等属性,form表单提交的时候,就不会传值到后台. ...
- IntelliJ IDEA 2018.3.2 永久破解
PS:动手能力强的来,手残的去淘宝买吧,大概15块钱1年.建议看完后在动手,有一个全局观,浪费不了多少时间 一. 下载破解补丁文件 链接:https://pan.baidu.com/s/1wFp14t ...
- 数据结构(集合)学习之Set
集合 框架关系图: Collection接口下面有三个子接口:List.Set.Queue.此篇是关于Set<E>的简单学习总结. 补充:HashTable父类是Dictionary,不是 ...
- centos 7 安装npm
下载网址https://nodejs.org/dist/latest-v8.x/ 安装过程参考https://blog.csdn.net/micarlxm/article/details/810912 ...