У меня странная проблема с этим кодом: если я запускаю его, как показано ниже, я получаю ошибку:
Произошла недопустимая операция с плавающей запятой.
Но если я изменю параметр @Longitude
на -98.508730 ( обратите внимание, только последняя измененная цифра ) код работает просто отлично.
Код должен перечислять свойства в @MilesRadius
вокруг некоторой точки LatLng.
Параметры @Latitude и @Longitude того же типа, что и поля долготы и широты в таблице Address.
Что я могу сделать здесь? Благодаря.
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