mysql中两点之间的距离不起作用?

时间:2016-10-30 15:23:53

标签: mysql math

编辑:我已经检查了其他问题但没有使用此公式

我有2个值(x,y)的行。我还有一点是具有一定半径的圆周的中心。我想检查这个点和我的行的点坐标之间的距离是否小于半径。我试图应用两点公式之间的距离来计算中心点和行点之间的距离,并确定行位置在圆的半径内(< radius):

var query = "SELECT * FROM table WHERE SQRT((POWER("+x+",2)-POWER(location_x,2))+(POWER("+y+",2)-POWER(location_y,2))) < " + radius;

由于某种原因,这不起作用,尽管改变了行的点坐标,但没有返回任何行。有什么想法吗?

公式中的坐标可能具有负值。在他们的测试样本中他们这样做。

1 个答案:

答案 0 :(得分:3)

我很确定您的Cartesian distance formula不正确。

您需要的公式是:

sqrt( (x - location_x)^2 + (y - location_y)^2 )

这就像转换为SQL一样:

 SELECT * 
   FROM table
  WHERE SQRT(   (POWER("+ x + "-location_x,2))
               +(POWER("+ y + "-location_y,2))
            ) < " + radius