SELECT RADIANS(47)vs SELECT RADIANS(47.0)

时间:2012-12-14 18:31:25

标签: sql-server tsql radians

使用我正在构建的商店定位器来解决此问题。 Radians函数在执行SELECT RADIANS(47)时返回零(0),但在执行SELECT RADIANS(47.0)时返回0.83 ....

结束的结果是使sql语句计算的距离为零(0)。我正在运行以下系统:

  • 操作系统名称Microsoft(R)Windows(R)Server 2003标准x64版
  • 版本5.2.3790 Service Pack 2 Build 3790
  • 系统模型VMware Virtual Platform
  • 基于x64的系统型PC
  • SQL Server Microsoft SQL Server 2005

这是我使用radians函数的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 

1 个答案:

答案 0 :(得分:3)

它按设计工作。 根据文档,此函数返回与参数相同的类型。 与简单的运算符相同: 选择5 / 2,5.0 / 2 - 返回2和2.5