我将以下“haversin”算法实现为 SQL 函数。
DELIMITER //
CREATE FUNCTION `db`.`haversin` (slat FLOAT, slon FLOAT, dlat FLOAT, dlon FLOAT)
RETURNS FLOAT
BEGIN
declare alphaLon,a FLOAT;
set alphaLon=(slon–dlon);
set a=3956*2*ASIN(SQRT( POWER(SIN((slat - abs(dlat)) * pi()/180 / 2),2) + COS(slat * pi()/180 ) * COS(abs(dlat) * pi()/180) * POWER(SIN((alphaLon) * pi()/180 / 2), 2) ));
return a;
END
//delimiter;
执行上述操作时,我得到一个 1064 错误“语法错误靠近 //delimiter”,但是,函数确实被创建了。
最令人困惑的是,在运行该函数时,结果如下:
mysql> SELECT haversin(2.0,45.0,2.0,1.2);
ERROR 1054 (42S22): Unknown column 'slon–dlon' in 'field list'
这怎么可能?