このコードには奇妙な問題があります。以下に示すように実行すると、エラーが発生します。
無効な浮動小数点演算が発生しました。
しかし、パラメータ@Longitude
を-98.508730に変更すると(最後の桁のみが変更されていることに注意してください) 、コードは問題なく機能します。
このコードは@MilesRadius
、LatLngポイント周辺のプロパティを一覧表示することになっています。
@Latitudeおよび@Longitudeパラメータは、テーブルAddressのlongitudeおよびlatitudeフィールドと同じタイプです。
ここで何ができますか?ありがとう。
DECLARE @Latitude decimal (10,6);
DECLARE @Longitude decimal (10,6);
DECLARE @MilesRadius int;
SET @Latitude = 29.607654
SET @Longitude = -98.508731
SET @MilesRadius = 5
SELECT ADR.LineOne as address,
ADR.City as city,
ADR.Latitude as latitude,
ADR.Longitude as longitude,
((3959 * acos(cos(radians(@Latitude)) * cos(radians(ADR.Latitude)) * cos(radians(ADR.Longitude) - radians(@Longitude)) + sin(radians(@Latitude)) * sin(radians(ADR.Latitude))))) as distance
FROM Shared.Address ADR
WHERE ADR.Latitude IS NOT NULL AND
ADR.Longitude IS NOT NULL AND
(3959 * acos(cos(radians(@Latitude)) * cos(radians(ADR.Latitude)) * cos(radians(ADR.Longitude) - radians(@Longitude)) + sin(radians(@Latitude)) * sin(radians(ADR.Latitude)))) < @MilesRadius
ORDER BY distance