解决方案可以找到最小和最大纬度和经度。 然后使用select查询中的between条件来获取结果。 但是我如何获得pl / sql中的最大和最小纬度和经度。
答案 0 :(得分:1)
我认为你没有plsql问题,你需要一个公式。这里有一些plsql代码,它们对pythagorean定理进行了计算(https://en.wikipedia.org/wiki/Pythagorean_theorem):
declare
v_yourX NUMBER := 0;
v_yourY NUMBER := 0;
v_anotherX NUMBER := 0;
v_anotherY NUMBER := 1;
v_diffX NUMBER;
v_diffY NUMBER;
v_distance NUMBER;
begin
v_diffX := v_yourX - v_anotherX;
v_diffY := v_yourY - v_anotherY;
v_distance := sqrt(v_diffX*v_diffX + v_diffY*v_diffY);
dbms_output.put_line('Distance: ' || v_distance);
end;
您想从数据库中选择一些内容。这是一个如何使用单个查询执行此操作的示例:
SELECT t.*, sqrt(t.posX*t.posX + t.posY+posY) as distance FROM
(
select (0 - :yourX) posX, (0 - :yourY) posY from dual UNION ALL -- fake-table
select (1 - :yourX) posX, (2 - :yourY) posY from dual UNION ALL
select (2 - :yourX) posX, (10 - :yourY) posY from dual
) t
WHERE sqrt(t.posX*t.posX + t.posY+posY) < :maxDistance