我正在尝试从我的表中选择位于特定多边形中的点。
这里我的表test1有data4列的几何类型,它包含:
2,3
5,6
7,10
当我尝试以下查询其返回空行。请帮我解决这个错误。
DECLARE @g geometry;
SET @g = geometry::STGeomFromText('POLYGON((0 0, 4 0, 4 4, 0 4, 0 0))', 0);
SELECT *
FROM test1
WHERE data4.STIntersects(@g) = 1;
我也试过了:
WHERE @g.STContains(geometry::STGeomFromText(test1.data4, 0))='True'
这不起作用。
如果你真的在谈论MySQL作为你的问题被标记,你使用完全错误的方法。STGeomFromText是一个SQL Server函数
你想要的MySQL查询就像;
SELECT *
FROM test1
WHERE MBRContains(GeomFromText('Polygon((0 0,0 4,4 4,4 0,0 0))'), data4)
用于测试
的SQLfiddle只是作为奖励,这里是如何为SQL Server编写它;
SELECT *
FROM test1
WHERE geometry::STGeomFromText('Polygon((0 0,0 4,4 4,4 0,0 0))',0)
.STContains(data4) = 1
另一个SQLfiddle 。