0

私が構築している Store Locator でこの問題に遭遇しました。Radians 関数は、SELECT RADIANS(47) を実行するとゼロ (0) を返しますが、SELECT RADIANS(47.0) を実行すると 0.83... を返します。

最終結果により、SQL ステートメントによって計算された距離がゼロ (0) になります。私は次のシステムで実行しています:

  • OS名 Microsoft(R) Windows(R) Server 2003 Standard x64 Edition
  • バージョン 5.2.3790 サービス パック 2 ビルド 3790
  • システム モデル VMware 仮想プラットフォーム
  • システムの種類 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 
4

1 に答える 1

3

設計どおりに動作します。ドキュメントによると、この関数はパラメーターと同じ型を返します。単純な演算子でも同じです: select 5/2, 5.0/2 -- 2 と 2.5 を返します

于 2012-12-14T18:36:31.417 に答える