我对这段代码有一个奇怪的问题:如果我如下所示运行它,我会收到错误:
发生了无效的浮点运算。
但是,如果我将参数更改@Longitude
为 -98.508730 (请注意仅更改了最后一位),代码就可以正常工作。
该代码应该列出@MilesRadius
某个 LatLng 点周围的属性。
@Latitude 和@Longitude 参数与地址表中的经度和纬度字段的类型相同。
我可以在这里做什么?谢谢。
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