次の「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 エラー 'syntax error near //delimiter' が表示されますが、関数は作成されます。
関数を実行すると、最も混乱するのは次の結果です。
mysql> SELECT haversin(2.0,45.0,2.0,1.2);
ERROR 1054 (42S22): Unknown column 'slon–dlon' in 'field list'
これはどのように可能ですか?