我希望获取我所在位置的所有位置,但功能ST_Distance_Sphere
不起作用。
我的查询:
select *, astext(location) as location from `locations`
where ST_Distance_Sphere(location, POINT(35.905069591297, 49.765869174153)) < 1000
错误:
SQLSTATE[42000]: Syntax error or access violation:
1305 FUNCTION app.ST_Distance_Sphere does not exist (SQL:
select *, astext(location) as location from `locations`
where ST_Distance_Sphere(location, POINT(35.905069591297, 49.765869174153)) < 1000)
答案 0 :(得分:1)
http://mysql.rjweb.org/doc.php/find_nearest_in_mysql#gcdistdeg
该博客讨论了MySQL / MariaDB在全球范围内“寻找最接近”的多种方法。作为讨论的一部分,我开发了该存储功能。
答案 1 :(得分:0)
我在DBA.SE上的答案的直接副本,
MariaDB lacks this ST_Distance_Sphere
(MDEV-13467)简直令人难以置信。
不仅如此,它还缺少MySQL拥有的ST_GeoHash
。
答案 2 :(得分:0)
我想就是ST_DISTANCE
https://mariadb.com/kb/en/library/st_distance/
答案 3 :(得分:0)
对于仍然需要在MariaDB中使用该函数的用户,可以根据公式创建该函数
CREATE FUNCTION `st_distance_sphere`(`pt1` POINT, `pt2` POINT) RETURNS
decimal(10,2)
BEGIN
return 6371000 * 2 * ASIN(SQRT(
POWER(SIN((ST_Y(pt2) - ST_Y(pt1)) * pi()/180 / 2),
2) + COS(ST_Y(pt1) * pi()/180 ) * COS(ST_Y(pt2) *
pi()/180) * POWER(SIN((ST_X(pt2) - ST_X(pt1)) *
pi()/180 / 2), 2) ));
END
答案 4 :(得分:0)
截至 2021 年 5 月 ST_Distance_Sphere 在 MariaDB 中可用