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)
非常感谢您提供的任何见解,您可以提供帮助!
你的计算正在积累一些小的错误,这意味着计算的值(传递给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位小数的精确度.