postgresql中获取json数据和聚合函数的使用

在postgresql中检查json数组相关知识如下:

假如有一张表test,数据如下:

postgresql中获取json数据和聚合函数的使用

1.查询json数组中的数据,用 '-> '获取JSON对象字段,'->>' 获取JSON对象字段作为文本:

1)select param,param->>'data'as  param2 from test    ;

postgresql中获取json数据和聚合函数的使用

param2结果为JSON对象字段

2)select param,param->>'data'as  param2 from test   ;

param2结果为text文本postgresql中获取json数据和聚合函数的使用

2.检查JSON数组是否包含一个字符串,切换到jsonb,用  ?  检查

1)select * from test where param::jsonb?'status';

postgresql中获取json数据和聚合函数的使用

以上方法过滤JSON数组中包含“status”字段的数据

3.若json数组中嵌套json数组,用->和?检查或者用传统的的like关键字

1)select * from test   where (param->'data')::jsonb?'status';

2)select * from test   where (param->>'data') LIKE '%"status"%';

两条sql执行结果一致为:

postgresql中获取json数据和聚合函数的使用


postgresql 从 9.2 开始增加对 JSON 的支持。9.5 已经支持多个 JSON 函数。

例表为users:

postgresql中获取json数据和聚合函数的使用

4.row_to_json() 函数,接受 “行值”并返回 JSON 对象

select row_to_json(e) from (select * from users)e

结果为:

postgresql中获取json数据和聚合函数的使用

5.array_agg 是一个聚合函数 sum 或 count,它聚集成一个 PostgreSQL 数组参数,array_to_json 以 PostgreSQL数组 拼合成一个单一的JSON值

select array_to_json(array_agg(e)) from (select * from users)e

结果为:

postgresql中获取json数据和聚合函数的使用

6.结合这几个聚合函数,写一个例子为:

select row_to_json(t) 
from (select name,pwd ,(select array_to_json(array_agg(e)) 
                        from (select * from channel)e) as list from users)t
where name = 'qxj' ;

postgresql中获取json数据和聚合函数的使用