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的更多相关文章

  1. PostgreSQL JSON 处理

    1.JSON类型    PostgreSQL支持JSON和JSONB.这两种类型在使用上几乎完全一致,主要区别是: (1)JSON类型把输入的数据原封不动的存放到数据库中.JSONB类型在存放时把JS ...

  2. MySQL数据导出为Excel, json,sql等格式

    MySQL数据经常要导出为Excel, json,sql等格式,通过步骤都很多,麻烦,现在通过Treesoft可以方便的导出你要的数据格式. 1.在线执行SQL,在数据列表中有相应按钮,方便的将数据导 ...

  3. 关于PostgreSQL的SQL注入必知必会

    一.postgresql简介 postgresql是一款关系型数据库,广泛应用在web编程当中,由于其语法与MySQL不尽相同,所以其SQL注入又自成一派. 二.postgresql的SQL注入:(注 ...

  4. PostgreSQL JSON函数

    https://www.postgresql.org/docs/9.6/static/functions-json.html PostgreSQL 9.6.1 Documentation Prev U ...

  5. PostgreSQL Json字段作为查询条件案例

    业务扩展字段在数据库中经常会使用json格式的数据来存储,这就涉及到一个头疼的问题,假设要使用扩展字段里的某个值作为查询条件怎么办,原来PostgreSQL本身就支持这种查询方式. 例子:假设业务扩展 ...

  6. Java ->在mybatis和PostgreSQL Json字段作为查询条件的解决方案

    Date:2019-11-15 读前思考: 你没想到解决办法? PostgreSQL 数据库本身就支持还是另有解决办法? 说明:首先这次数据库使用到Json数据类型的原因,这次因为我们在做了一个app ...

  7. 玩转Web之Json(二)----jquery easy ui + Ajax +Json+SQL实现前后台数据交互

    最近在学Json,在网上也找过一些资料,觉得有点乱,在这里,我以easy ui的登录界面为例来说一下怎样用Json实现前后台的数据交互 使用Json,首先需要导入一些jar包,这些资源可以在网上下载到 ...

  8. postgresql 日常sql

    查看服务进程: select pid,usename,client_addr,client_port from pg_stat_activity;   查看当前数据库实例的版本:  select ve ...

  9. 不得不补:PHP的JSON, SQL

    不管怎么说,还是得感谢慕课网,提供了很多免费的视频教学. 学习自: https://www.imooc.com/view/68 前端页面: <!DOCTYPE html> <html ...

随机推荐

  1. MySql学习-4.查询1

    1.基本查询语法: select * from 表名: **注意** 1.select 后写列名,*代表是所有列:        2.列名可以用as起别名,其出现在结果集中: 3.查询多个列,之间用逗 ...

  2. iMacros 入门教程-基础函数介绍(4)

    imacros的TRAY函数用法 这个函数的功能就是隐藏或显示,当执行imacros文件的时候,出现在特定标签的imacros图标 TRAY HIDE 就是隐藏图标 TRAY SHOW 就是显示图标 ...

  3. opencv —— resize、pyrUp 和 pyrDown 图像金字塔(高斯金字塔、拉普拉斯金字塔)与尺寸缩放(向上采样、向下采样)

    我们经常会将某种尺寸的图像转化为其他尺寸的图像,如果需要放大或者缩小图像的尺寸,在 OpenCV 中可以使用如下两种方法: resize 函数,最直接的方法. pyrUp 和 pyrDown 函数,即 ...

  4. CSRF防护

    CSRF防护 (待完善...)

  5. HTML(多行)文本超过部分隐藏,末尾显示(...)

    HTML(多行)文本超过部分隐藏,末尾显示(...) <!DOCTYPE html> <html> <head> <meta charset="ut ...

  6. MyBatis中foreach循环的用法

    一.在了解foreach之前,先了解一下mybatis传入参数及parameterType 1.我们在Dao层向对应的mapper.xml文件传递参数时,可以传递的参数有: ①.基本数据类型(如int ...

  7. Android一个简单的自定义对话框制作

    布局文件 <?xml version="1.0" encoding="utf-8"?> <TableLayout xmlns:android= ...

  8. Codeforces Round #612 (Div. 2) (A-D)

    直 接看所有A后面连续P的个数最大值 #include<cstring> #include<cstdio> #include<set> #include<io ...

  9. py 二级习题(重新输出文本-----每行一句话)

    #需要的一小段文本 txt = "人生得意须尽欢,莫使金樽空对月.天生我才必有用,千金散尽还复来." #对文本进行分割,转换成列表形式 def txt_split(txt): li ...

  10. web服务器的解析漏洞罗列

    前言 服务器相关中间件存在一些解析漏洞,攻击者可通过上传一定格式的文件,被服务器的中间件进行了解析,这样就对系统造成一定危害.常见的服务器解析漏洞涉及的中间件有IIS,apache.nginx等.可利 ...