使用欧氏距离测量查询距离

时间:2016-10-20 03:20:17

标签: sql oracle

我目前正在尝试创建一个查询,该查询将使用给定的纬度/经度值计算两点之间的距离。到目前为止我构建了一个查询,但遇到了几个错误,并且不确定我是否在正确的道路上!任何指导或建议将不胜感激。我是oracle的新手。

到目前为止

代码:

DECLARE
  lat NUMBER := -12;
  lon NUMBER := 130;
BEGIN
SELECT x_id
FROM x
WHERE x_id = sqrt(power(lat - latitude, 2) + (lon - longitude, 2))
END;  
/

任何帮助都将非常感谢!!

1 个答案:

答案 0 :(得分:0)

您在匿名块中使用简单的SQL语句。您需要使用变量来接收查询返回的值 经度计算缺少功率函数 分号';'在查询结束时丢失。

SET SERVEROUTPUT ON
DECLARE
  lat NUMBER := -12;
  lon NUMBER := 130;
  lv_id NUMBER;
BEGIN
SELECT x_id INTO lv_id
FROM x
WHERE x_id = sqrt(power(lat - latitude, 2) + power(lon - longitude, 2));
dbms_output.put_line('ID : '||lv_id);
EXCEPTION
WHEN no_data_found THEN
   dbms_output.put_line('ID Not Found');
WHEN too_many_rows THEN
   dbms_output.put_line('More than one ID Not Found');
END;  
/