2012-12-14 35 views
0

用我正在構建的Store Locator處理此問題。 Radians函數在執行SELECT RADIANS(47)時返回一個零(0),但在執行SELECT RADIANS(47.0)時返回0.83 ...。SELECT RADIANS(47)vs SELECT RADIANS(47.0)

結束結果導致sql語句計算的距離爲零(0)。

  • 操作系統名稱微軟(R)的Windows(R)Server 2003標準x64版
  • 版本5.2.3790 Service Pack 2的構建3790
  • 系統模型的VMware虛擬平臺:我下面的系統上運行
  • 系統類型基於x64的PC
  • 的SQL Server的Microsoft SQL Server 2005

下面是我使用的弧度functi的SQL語句與...一起。

SELECT TOP 15 i.* FROM ( 
    SELECT [id],[storeName],[storeNumber],[latitude],[longitude], 

    ROUND((3959*acos(cos(radians([latitude])) * cos(radians(47)) 
    * cos(radians(-122.915) - radians([longitude])) + sin(radians([latitude])) 
    * sin(radians(47)))) , 2) AS distance 

    FROM [Public].[dbo].[stores] WHERE [latitude] <> 0 AND [longitude] <> 0 
) i WHERE distance < '50' ORDER BY i.distance 

回答

3

它按設計工作。 根據文檔此函數返回與參數相同的類型。 與簡單算子相同: 選擇5/2,5.0/2 - 返回2和2.5