计算距离时,我的查询收到以下错误

Chr*_*end 3 sql t-sql sql-server sql-server-2008 sql-server-2008-r2

我收到以下错误"发生了无效的浮点运算." 当我运行此查询时:

SELECT PolID, LocID, Address, City, StateCode, OrigGeoLat, OrigGeoLong, NewGeoLat, NewGeoLong, 
acos(sin(radians(OrigGeoLat)) * sin(radians(NewGeoLat)) +
        cos(radians(OrigGeoLat)) * cos(radians(NewGeoLat)) *
        cos(radians(OrigGeoLong - NewGeoLong))) * 6372.8  as Distance
FROM zzGeoDataTMP
Run Code Online (Sandbox Code Playgroud)

所有*geoLat和*geoLong数据都定义为数字(18,10).当我运行查询时,我开始获取数据然后在特定的数据行上出现错误.例如,以下行仅在调用ACOS函数时抛出上述异常:

OrigGeoLat|OrigGeoLong|NewGeoLat|NewGeoLong
---------------------------------------------
32.9364620|-80.0411000|32.9364620|-80.0411000
Run Code Online (Sandbox Code Playgroud)

非常感谢您提供的任何见解,您可以提供帮助!

Dam*_*ver 9

你的计算正在积累一些小的错误,这意味着计算的值(传递给ACOS)略高于 1.尝试用ROUND调用包装它:

acos(ROUND(sin(radians(OrigGeoLat)) * sin(radians(NewGeoLat)) +
    cos(radians(OrigGeoLat)) * cos(radians(NewGeoLat)) *
    cos(radians(OrigGeoLong - NewGeoLong)),15)
    )
Run Code Online (Sandbox Code Playgroud)

我们保留15位小数的精确度.