CREATE DEFINER=`root`@`%` FUNCTION `getDistance`(`lon1` double,`lat1` double,`lon2` double,`lat2` double) RETURNS varchar(200) CHARSET utf8mb4
BEGIN
declare vLon1,vLat1,vLon2,vLat2,distance,vShortLon,vShortLat double;
declare vRlt double;
set vLon1 = lon1;
set vLat1 = lat1;
set vlon2 = lon2;
set vLat2 = lat2;
set vRlt = 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))) * 1000
);
return vRlt;
RETURN '';
END;
select getDistance(116.32793,39.94607,121.42575,31.24063);