postgresql中获取json数据和聚合函数的使用
在postgresql中检查json数组相关知识如下:
假如有一张表test,数据如下:
1.查询json数组中的数据,用 '-> '获取JSON对象字段,'->>' 获取JSON对象字段作为文本:
1)select param,param->>'data'as param2 from test ;
param2结果为JSON对象字段
2)select param,param->>'data'as param2 from test ;
param2结果为text文本
2.检查JSON数组是否包含一个字符串,切换到jsonb,用 ? 检查
1)select * from test where param::jsonb?'status';
以上方法过滤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 从 9.2 开始增加对 JSON 的支持。9.5 已经支持多个 JSON 函数。
例表为users:
4.row_to_json() 函数,接受 “行值”并返回 JSON 对象
select row_to_json(e) from (select * from users)e
结果为:
5.array_agg 是一个聚合函数 sum 或 count,它聚集成一个 PostgreSQL 数组参数,array_to_json 以 PostgreSQL数组 拼合成一个单一的JSON值
select array_to_json(array_agg(e)) from (select * from users)e
结果为:
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' ;