MySQL "St_distance_Sphere"函数

4

我正在尝试查询一个小表,以查找表中所有距离输入坐标点1公里范围内的记录。表中的每个记录都有相应的“Lat”和“Long”列。我的查询是:

var sql = `SELECT * FROM GeoTest WHERE st_distance_sphere(POINT(-100,35),POINT(Long,Lat)) <= 1000`

错误 '您的SQL语法有误; 请检查对应于您的MySQL服务器版本的手册,以获取正确的语法,接近\'Long,Lat)) <= 1000\'

表中的数据

id        Lat                 Long

1   30.5092060000000000 -97.6046760000000000
2   31.1310390000000000 -97.7805610000000000

我不知道如何使用选定行返回的纬度和经度来比较距离,然后只有在1公里范围内才返回记录。我该如何将记录中的Long和Lat字段替换到st_distance_sphere函数中?我确定我在这里缺少非常简单的东西。感谢帮助这个SQL新手!

1个回答

4

该功能可与5.7和8.0兼容。

   Select st_distance_sphere(POINT(-100,35),
   POINT ( `Long` , `Lat`) ) From GeoTest;

我遇到了这个错误:“提供给函数st_geometryfromtext的GIS数据无效。” 我已经尝试使用数据为double和字符串的列,但仍然出现相同的错误。 - Kevin Gardenhire
编辑您的帖子并向我们展示您的实际数据。最终您必须使用GeomFromText(CONCAT('POINT (', Long, ' ', Lat, ')'))。 - nbk
我发布了表格数据。 - Kevin Gardenhire
好的,我会根据你的数据进行修改。但是它们中没有一个小于1000,通常距离是以1000为单位划分的。 - nbk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接