先说一下需求
我现在有个字段地址如“河南省洛阳市洛龙区李村镇”
我要统计洛阳市每个区的注册人数
类似于这样的
想要的数据是

select substring(user_address,7,3) as 地区 ,count(*) as 人数
from user GROUP BY substring(user_address,7,3)
substring(user_address,7,3) 字符串截取
GROUP BY substring(user_address,7,3)按照截取的字符串分类
上面额代码存在弊端就是当市的名字不是3个字时查找就有问题
发面用三目运算符进行取数据
substring(user_address,LOCATE(‘市’,user_address,1)+1,if( LOCATE(‘县’,user_address,1)>0,LOCATE(‘县’,
针对'河南省洛阳市洛龙区李村镇'这类地址,原代码在统计洛阳市各区注册人数时遇到问题。通过使用三目运算符结合LOCATE函数,解决了市名长度不固定导致的错误。优化后的查询语句能更准确地截取地址字段,并在一万行数据中达到0.043秒的查询速度。
最低0.47元/天 解锁文章
593

被折叠的 条评论
为什么被折叠?



