【PostgreSQL】存取jsonb

      从PostgreSQL 9.3开始,json就成了postgres里的一种数据类型,也就是和varchar、int一样,我们表里的一个字段的类型可以为json了。

      于此同时,postgres还提供了jsonbs格式,jsonb格式是json的二进制形式,二者的区别在于json写入快,读取慢,jsonb写入慢,读取快,但在操作上,二者是没有区别的。下面以jsonb为例。

创建表

假设我们要存储的json数据是这样的:

{
   "id":ID
   "name":"名字",
   "年龄":年龄
}

建表语句如下:

create table if not exists name_age{
    info jsonb
}

好了,这样就创建了一张表,里面只有一个 info 字段,下面开始进行CRUD操作。

插入数据

插入数据可以直接以json格式插入:

insert into name_age values('{"id":1,"name":"小明","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当前这条记录里的顶层json中有没有id为1的key-value对;有的话则满足条件。

原文地址:https://www.cnblogs.com/pretty-ru/p/10881623.html