Sql Lat长距离计算

Sql Lat长距离计算,sql,oracle,Sql,Oracle,我正在尝试使用下面的查询获取以米为单位的距离。但每次运行查询时,都会出现以下错误: 错误的事件异常:ORA-01428 ReasonORA-01428:OracleExecutionException:参数“1.0000000000000000000000000000000000000 1”超出范围 可能您对ACOS函数有问题 例:如果你想像这样使用acos函数;助理文书主任(x) x的值应在[-1,1]范围内 您可以在本文中阅读更多信息。如前所述,ACOS必须是[-1,1]。 此查询可能适用于

我正在尝试使用下面的查询获取以米为单位的距离。但每次运行查询时,都会出现以下错误:

错误的事件异常:ORA-01428 ReasonORA-01428:OracleExecutionException:参数“1.0000000000000000000000000000000000000 1”超出范围


可能您对ACOS函数有问题

例:如果你想像这样使用acos函数;助理文书主任(x)

x的值应在[-1,1]范围内


您可以在本文中阅读更多信息。

如前所述,ACOS必须是[-1,1]。 此查询可能适用于以下情况:

SELECT station,
       name,
       id,
       a.latitude,
       a.longitude,
       h.latitude as a_latitude,
       h.longitude as a_longitude,
        ACOS(ROUND(COS(ACOS(-1)/180*(90-a.latitude))*COS(ACOS(-1)/180*(90-h.latitude))+SIN(ACOS(-1)/180*(90-a.latitude))*SIN(ACOS(-1)/180*(90-h.latitude))*COS(ACOS(-1)/180*(a.longitude-h.longitude)), 20)) * 6371000 as Distance_in_metres

FROM
       address1 h,
       ADDRESSES a

你真的从MySQL服务器上得到了“ORA-01428 ReasonORA-01428:OracleExecutionException”吗?我使用的是oracle而不是MySQL服务器,那么为什么要使用MySQL标签呢?如果你改为标记Oracle,你会更快地得到更好的答案!经度和纬度列的数据类型是什么?如果使用浮点数据类型而不是数字数据类型,可能会出现舍入错误?我们使用的是数字数据类型
SELECT station,
       name,
       id,
       a.latitude,
       a.longitude,
       h.latitude as a_latitude,
       h.longitude as a_longitude,
        ACOS(ROUND(COS(ACOS(-1)/180*(90-a.latitude))*COS(ACOS(-1)/180*(90-h.latitude))+SIN(ACOS(-1)/180*(90-a.latitude))*SIN(ACOS(-1)/180*(90-h.latitude))*COS(ACOS(-1)/180*(a.longitude-h.longitude)), 20)) * 6371000 as Distance_in_metres

FROM
       address1 h,
       ADDRESSES a