MySQL 5.6 - 避免两次解析几何体?

时间:2017-11-03 14:23:31

标签: mysql mysql-5.6

我需要查询多边形内的点,该点存储在不同的表中。下面的查询可以正常工作:

SET @b := PolyFromText((SELECT AsText(boundaries.geometry) 
                        FROM boundaries_users 
                        LEFT JOIN  boundaries 
                          ON boundaries_users.boundary_id = boundaries.id
                        WHERE boundaries_users.boundary_name = 'name')); 

SELECT 
    id,
    addr_lon, 
    addr_lat,
    ST_Contains(@b, POINT(addr_lat, addr_lon))
FROM buildings
WHERE ST_Contains(@b, POINT(addr_lon, addr_lat));

这里,boundary.geometry的类型为GEOMETRY。但是,我不明白为什么我必须将几何转换为文本并返回到几何图形才能这样做。删除双解析时,@ b显示为一组奇怪的符号,ST_Contains为任何点返回False。

MySQL 5.6

1 个答案:

答案 0 :(得分:0)

我的猜测是你要连接多个几何体,所以你的两个查询会产生不同的几何形状。

检查您是否实际使用相同的几何体:

 SET @b := With double parsing and without parsing

然后查看AsText(@b)生成的内容。