0

経度と緯度で最も近い10の場所を取得したい. 経度と緯度を double として保存します。私はこれを試しました:

SELECT * FROM company as dest where 3956 * 2 * ASIN(SQRT( POWER(SIN((122.4058 - abs( dest.latitude)) * pi()/180 / 2),2) + COS(122.4058 * pi()/180 ) * COS( abs (dest.latitude) * pi()/180) * POWER(SIN((37.7907 – dest.longitude) * pi()/180 / 2), 2) )) as dis <10 and ORDER BY dis limit 10; 

しかし、私はこのエラーが発生します:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '– dest.longitude) * pi()/180 / 2), 2) )) as dis <10 and ORDER BY dis limit 10 ' at line 1

このエラーを解決するにはどうすればよいですか?

4

2 に答える 2

1

私はあなたのSQLコードをコピーし、それを構文強調表示をサポートするエディタ(Sublime2)に入れました。エラーが指している(マイナスのように見える)文字は、実際には別の記号です..

この Web ページによると、この文字は EN DASH と呼ばれます (リンクの最後にある utf8-hex-code で確認できます :)) http://www.utf8-character.info/#!%E2%80%93

この文字を単純なマイナスに置き換えてみてください。

于 2013-05-22T09:49:26.503 に答える
1

これを試して :

     POWER(SIN((37.7907 – abs(dest.longitude))

EDIT2:

     SELECT *,3956 * 2 * ASIN(SQRT( POWER(SIN((122.4058 - abs(dest.latitude)) * pi()/180 / 2),2) + COS(122.4058 * pi()/180 ) * COS( abs(dest.latitude) * pi()/180) * POWER(SIN((37.7907 - abs(dest.longitude)) * pi()/180 / 2), 2) )) as dis FROM company as dest HAVING dis <10 ORDER BY dis limit 10;
于 2013-05-22T10:10:13.960 に答える