解析期间发现非法的非几何\'aswkb(…)\'值

|| 我使用了来自http://dev.mysql.com/tech-resources/articles/4.1/gis-with-mysql.html的教程 所以我创建了两个表,插入了一些数据,当我尝试使用此类脚本获取一些数据时
SELECT
  c.cab_driver,
  ROUND(GLength(LineStringFromWKB(LineString(AsBinary(c.cab_loc),
                                             AsBinary(a.address_loc)))))
    AS distance
FROM cab c, address a
WHERE a.address = \'Foobar street 110\'
ORDER BY distance ASC LIMIT 1;
我收到一个错误:\“错误代码:1367解析期间发现非法的非几何\'aswkb(
c
.
cab_loc
)\'值\” 有什么建议么? 我在这个问题上取得了一些进展,我尝试运行
SELECT 
    asbinary(c.cab_loc)
FROM usercoordinates.cab c;
而且我在每一行中都得到NULL,但是如果我使用astext,我在每一行中都会得到POINT(...) 最后我明白了,也许不是最好的解决方案,但是
SELECT
  c.cab_driver,
  Round(glength(LineStringFromWKB(LineString(GeomFromText(astext(c.cab_loc)),GeomFromText(astext(a.address_loc)))))) AS distance
FROM cab c, address a
WHERE a.address = \'Foobar street 99\'
ORDER BY distance ASC LIMIT 1;
    
已邀请:
SELECT c.cab_driver,
Round(glength(LineStringFromWKB(LineString(GeomFromText(astext(c.cab_loc)),
GeomFromText(astext(a.address_loc)))))) AS distance
FROM cab c, address a
WHERE a.address = \'Foobar street 99\'
ORDER BY distance ASC LIMIT 1;
    
非常难看的解决方案,但我也找不到其他解决方案。 顺便说一下,我们可以通过使用其他包装函数来缩短查询时间:
DELIMITER $$
DROP FUNCTION IF EXISTS pointIt $$
CREATE function pointIt (src POINT)
RETURNS POINT
BEGIN
RETURN GeomFromText(astext(src));
END $$
DELIMITER ;
    
我必须对Hituptony的Mysql 5.6解决方案进行一些细微更改:
SELECT c.cab_driver,
Round(glength(LineStringFromWKB(LineString(c.cab_loc,
a.address_loc)))) AS distance
FROM cab c, address a
WHERE a.address = \'Foobar street 99\'
ORDER BY distance ASC LIMIT 1;
    

要回复问题请先登录注册