我知道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
答案 0 :(得分:1)
您打错了字。
将SET @srctLat = 41.024449;
更改为SET @srcLat = 41.024449;