mysql 计算两点(经纬度)间的距离

mysql 原生计算:

SELECT 6378.138*2*ASIN(SQRT(POW(SIN((40.007420*PI()/180-latitude*PI()/180)/2),2)+COS(40.007420*PI()/180)*COS(latitude*PI()/180)*POW(SIN((116.402197*PI()/180-longitude*PI()/180)/2),2)))*1000 AS juli
FROM users where user_id=10;

mysql 函数:

DELIMITER $$
DROP FUNCTION IF EXISTS `fun_distance`$$
CREATE FUNCTION `fun_distance`(lat1 float,lng1 float,lat2 float,lng2 float) RETURNS float
BEGIN
set @num=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((lng1*PI()/180-lng2*PI()/180)/2),2)))*1000;
RETURN @num;
END$$
DELIMITER ;


example:

select fun_distance(40.007420,116.402197,latitude,longitude) from users where user_id=10;



你可能感兴趣的:(经纬度距离)