MySql操作

对JSON串的操作

demo:

select 
	t.id,
	t.detail ->> '$.product' as product 
from base_info t
where t.detail ->> '$.product' is not null;

结果:

ID产品名称
127.5%双氧水
2DCPD加氢树脂

如果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');

结果:

人数区间公司数
<10023
100-20012
200-30011
>3003

MySql数据库查询结果转换JSON数组

demo:

select name,phone from user;

namephone
jack123456
John123456

语法:

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;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值