MySQL之根据经纬度计算距离
可以在MySQL层面使用自定义计算函数来使用
CREATE DEFINER=`xxx`@`%` FUNCTION `get_distance`( lat1 float,lon1 float,lat2 float,lon2 float) RETURNS float SQL SECURITY INVOKER BEGIN RETURN ROUND(6378.138 * 2 * ASIN(SQRT(POW(SIN((lat1 * PI() / 180 - lat2 * PI() / 180) / 2), 2) + COS(lat1 * PI() / 180) * COS(lat2 * PI() / 180) * POW(SIN(( lon1 * PI() / 180 - lon2 * PI() / 180 ) / 2),2))),2); END
当然,MySQL 5.7 引入了 ST_Distance_Sphere
, 这是一个计算两点之间距离的原生函数 (在地球上).
使用方式:
select ST_Distance_Sphere( point(-87.6770458, 41.9631174), point(-73.9898293, 40.7628267) )
这使我们得到1148978.6738241839
,以米为单位 # 注意: 注意:point 方法的参数首先是经度,然后是纬度;这是一个常见的陷阱!
更多使用参考:
- https://learnku.com/laravel/t/40975
【推荐】2025 HarmonyOS 鸿蒙创新赛正式启动,百万大奖等你挑战
【推荐】博客园的心动:当一群程序员决定开源共建一个真诚相亲平台
【推荐】开源 Linux 服务器运维管理面板 1Panel V2 版本正式发布
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从硬盘爆满到 GitHub 封号,一位前端开发者的开源历险记
· 微软又一自动化开源王炸,Selenium 慌了!
· 糊涂啊!这个需求居然没想到用时间轮来解决。
· 微服务的10大问题
· 性能优化:两条SQL索引优化,CPU占用率从40%降至25%
2021-03-10 PHP编译扩展
2020-03-10 Lnmp编译安装(2020)