对JSON串的操作
demo:
select t.id, t.detail ->> '$.product' as product from base_info t where t.detail ->> '$.product' is not null;
结果:
ID 产品名称 1 27.5%双氧水 2 DCPD加氢树脂 如果JSON嵌套的字符串中的字段, ‘$.product.想要的字段名称’
以此类推…一直点到你想要的字段即可, 就像对象点出属性
按照字段的区间数值分组语法
demo:
按照公司的人数分组,0-100, 100-200, 200-300, 300以上
语法: elt(interval(公司人数字段’, 0, 100, 200, 300), ‘0到100’, ‘100到200’, ‘200到300’, ‘大于300’)
SELECT elt(interval(t.detail ->> '$.peopleNumber',0, 100, 200, 300), '1_<100', '2_100-200', '3_200-300', '4_>300') as peopleNumber, count(t.id) AS companyCount FROM base_info t WHERE t.type = "company" and t.detail ->> '$.peopleNumber' is not null GROUP BY peopleNumber,elt(interval(t.detail ->> '$.peopleNumber', 0, 100, 200, 300), '0到100', '100到200', '200到300', '大于300');
结果:
人数区间 公司数 <100 23 100-200 12 200-300 11 >300 3
MySql数据库查询结果转换JSON数组
demo:
select name,phone from user;
name phone jack 123456 John 123456 语法:
SELECT CONCAT( '[', GROUP_CONCAT(JSON_OBJECT('name', name, 'phone', phone)), ']' ) FROM person;
网上找到的新的方式,在我这里没有生效,不知是工具不支持还是版本太老或者其他原因,提示JSON_ARRAYAGG函数不存在
SELECT JSON_ARRAYAGG(JSON_OBJECT('name', name, 'phone', phone)) from Person;