2011-12-25 41 views
2

我正在搜索stackoverflow並得到了我的問題的答案,但是當我試圖用我的代碼實現它時,我得到了奇怪的錯誤。用於大圓計算的SQL錯誤

這裏是代碼:

SELECT `zip_code`, (6371 * acos(cos(radians($latitude)) * cos(radians(`lat`)) * cos(radians(`long`) - radians($longitude)) + sin(radians($latitude)) * sin(radians(`lat`)))) AS `distance` 
FROM `places` 
HAVING `distance` < $within 
ORDER BY `distance` ASC 
LIMIT 10; 

我得到以下錯誤:

Incorrect parameter count in the call to native function 'radians'

我使用MySQL的版本44年1月5日

+0

是否有可能在字段中有NULLS。我認爲傳遞給該函數的空值可能會返回此錯誤 – Sparky 2011-12-25 18:46:21

+0

這是從shell腳本啓動的嗎?給定的值是「緯度」還是「經度」? – 2011-12-25 19:09:36

+0

是的,它們是給定值,並且沒有NULL值 – Grigor 2011-12-25 19:17:39

回答

3

從我找到的鏈接,這是通常是由度數參數傳遞給弧度函數引起的,用逗號將整數與度數值的小數部分分開。

53779度經線 4,566度北緯

這看起來像兩個參數(用逗號分隔)的弧度功能,它拋出,你看到的錯誤。

解決的辦法是做一些飛行修改來格式化你的學位論點作爲分隔符而不是逗號。