-- mysql中心点查询几公里范围其他坐标
CREATE DEFINER=`air`@`%` FUNCTION `mydistance`(sLongitude VARCHAR(20), sLatitude VARCHAR(20),sLongitude1 VARCHAR(20), sLatitude1 VARCHAR(20)) RETURNS double
READS SQL DATA
begin
return ifnull(
ROUND(
6378.138 * 2 * ASIN(
SQRT(
POW(
SIN( ( sLatitude * PI( ) / 180 - sLatitude1 * PI( ) / 180 ) / 2 ),
2
) + COS( sLatitude * PI( ) / 180 ) * COS( sLatitude1 * PI( ) / 180 ) * POW(
SIN( ( sLongitude * PI( ) / 180 - sLongitude1 * PI( ) / 180 ) / 2 ),
2
)
)
) * 1000
),
999999
);
end
使用方式
select mydistance ( 107.80918, 30.67525, longitude, latitude ) juli from table_name where
mydistance ( 107.80918,30.67525, longitude, latitude )<=5000 -- (5000值得5公里)