【PostgreSQL】存取jsonb
从PostgreSQL 9.3开始,json就成了postgres里的一种数据类型,也就是和varchar、int一样,我们表里的一个字段的类型可以为json了。 与此同时,postgres还提供了jsonb格式,jsonb格式是json的二进制形式,二者的区别在于json写入快,读取慢,jsonb写入慢,读取快,但在操作上,二者是没有区别的。下面以jsonb为例。 创建表假设我们要存储的json数据是这样的: {
"id": ID
"name":"名字","age":年龄
}
建表语句如下: create table if not exists name_age (
info jsonb
)
好了,这样就创建了一张表,里面只有一个 插入数据插入数据可以直接以json格式插入: insert into name_age values('{"id":1,"小明",0)">"age":18}')
在json里插入新的key值gender,如下: SELECT info||'{"gender":"男"}'::jsonb from name_age where (info->>'id'):int4 = 1
查询数据Postgres里的查询需要用到查询符。比如说,我们要查询id为1的数据,语句如下: select info from name_age where info @> '{"id":1}'::jsonb
用到了 再来一个复杂一点的查询的,查询 info->'name' from name_age where (info->>'age')::int4 > 16
关于详细运算符使用,请参考官方文档:9.15. JSON Functions and Operators 修改数据 下面,将 SELECT info ||'{"age":22}'1
上述用法仅适用于9.5以上,9.5以下需要整个记录更新,不可以单独修改某个值。 除了操作符以外,还可以使用函数操作: jsonb_set(target jsonb,path text[],new_value jsonb[,create_missing boolean])
详细使用可参考9.15. JSON Functions and Operators 删除数据删除age这个key,SQL如下: SELECT info-'age' from name_age where ('id')::int4 = 1
直接用操作符 总结PostgreSQL 9.5以上的版本中有了很多方便的操作符,使得操作json变得非常方便了。 转载请注明出处: http://www.zgljl2012.com/postgresql-cun-qu-jsonb/ (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |