PostgreSQL JSON类型字段常用操作
Posted RockyPeng3
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PostgreSQL JSON类型字段常用操作相关的知识,希望对你有一定的参考价值。
初始数据
insert into name_age values('"id":1,"name":"小明", "age":18');
insert into name_age values('"id":2,"name":"小明1", "age":17');
insert into name_age values('"id":3,"name":"小明3", "age":16');
insert into name_age values('"id":4,"name":"小明4", "age":20');
insert into name_age values('"id":5,"name":"小明5", "age":30');
insert into name_age values('"id":6,"name":"小明6", "age":10');
insert into name_age values('"id":7,"name":"小明7", "age":15');
insert into name_age values('"id":8,"name":"小明8", "age":35');
insert into name_age values('"id":9,"name":"小明9", "age":35');
Where
精确匹配
SELECT info||'"gender":"男"' as a,info||'"gender":"男"'::jsonb as b,info as c from name_age where (info->>'id')::int4 = 2;
SELECT info||'"gender":"男"' as a,info||'"gender":"男"'::jsonb as b,info as c from name_age where (info->>'name') = '小明4';
模糊匹配
select * from name_age where info #>> 'name' like '%明';
select * from name_age where (info->>'name') like '%4';
排序
select * from name_age order by info->'age' desc,info->'id' asc;
select * from name_age order by info->>'age' desc,info->'id' asc;
select * from name_age order by info->>'age' desc,info->>'id' asc;
修改
增加json字段
update name_age set info = info || '"gender":"男"'::jsonb where (info->>'id')::int4 = 1;
删除json字段
update name_age set info = info-'gender' where (info->>'id')::int4 = 1;
修改json字段值
update name_age set info = info || '"age":16'::jsonb where (info->>'id')::int4 = 1;
分页
select * from name_age order by info->>'age' desc,info->>'id' asc limit 2 offset 1;
- offset 从0开始
以上是关于PostgreSQL JSON类型字段常用操作的主要内容,如果未能解决你的问题,请参考以下文章
检查 json 类型列 PostgreSQL 中是不是存在字段
使用mybatis中的自定义TypeHandler处理PostgreSQL中的Json类型字段
如何修改新 PostgreSQL JSON 数据类型中的字段?