为什么此距离查询没有返回结果

时间:2019-07-16 15:40:57

标签: mysql mysql-workbench gis

我知道DistanceInMiles函数有效,我对其进行了测试。但是,为什么查询不返回任何结果。我是sql的新手,所以我真的不知道如何执行复杂的查询,但是我不知道为什么这不起作用。数据库中的所有项目均满足查询的要求。但它返回0行。

DELIMITER $$

DROP FUNCTION IF EXISTS DistanceInMiles$$
CREATE FUNCTION DistanceInMiles(src_lat decimal(10, 8), src_lng decimal(11, 8), dest_lat decimal(10, 8), dest_lng decimal(11, 8)) 
RETURNS decimal(15, 8) DETERMINISTIC
BEGIN
RETURN CAST((3959 * acos(cos(radians(src_lat)) * cos(radians(dest_lat)) *
    cos(radians(dest_lng) - radians(src_lng)) + sin(radians(src_lat)) *
    sin(radians(dest_lat)))) as decimal(15, 8));
END $$

DELIMITER ;

SET @dist = 2500;

SET @srctLat = 41.024449;

SET @srcLng = -72.481628;

SELECT z.lat, z.lng, z.name, z.restaurant_id,
DistanceInMiles(@srcLat, @srcLng, z.lat, z.lng) as distance
from restaurants z
HAVING distance < @dist
ORDER BY distance
LIMIT 10

1 个答案:

答案 0 :(得分:1)

您打错了字。 将SET @srctLat = 41.024449;更改为SET @srcLat = 41.024449;