MYSQL:在地理空间查询中使用VARCHAR字段作为POINT



我决定检测两点之间的距离。其中一个点是静态的-35.735019 51.410041,然而,另一个是由数据库字段给定的点。

这是我的代码:

SELECT
r0_.restaurant_point AS restaurant_point_0,
ST_Distance(GeomFromText('POINT(35.735019 51.410041)'), GeomFromText('POINT(r0_.restaurant_point)')) *
100 AS sclr_1
FROM restaurants r0_

我们将CCD_ 2存储为CCD_。以下面的字符串为例:35.73062161548168 51.410930156707764

虽然如果我用静态值更改r0.restaurant_point会起作用,但它不能用数据库字段获得度量值。

是否有绑定此值或其他解决方法?

要在表示点的字符串中连接列restaurant_point的值,可以使用CONCAT((。

GeomFromText(CONCAT('POINT(', t.restaurant_point, ')'))

在您的情况下,您只是试图创建一个点,而不是根据列中的坐标,而是根据列名本身。您需要更改您的代码如下:

SELECT
r0_.restaurant_point AS restaurant_point_0,
ST_Distance(
GeomFromText('POINT(35.735019 51.410041)'), 
GeomFromText(CONCAT('POINT(', r0_.restaurant_point, ')'))
) * 100 AS sclr_1
FROM restaurants r0_

相关内容

  • 没有找到相关文章

最新更新