私が構築している 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