2013-03-01 146 views
0

我想从我的表中选择位于特定多边形中的点。
这里我表test1的有几何型的DATA4列,它包含:SQLintersects查询不能正常工作

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' 

这并没有正常工作。

回答

1

如果你真的在谈论有关MySQL的问题时,你正在使用完全错误的方法。 STGeomFromText是一个SQL Server函数。

MySQL query做你想做的事就像做一样简单;

SELECT * 
FROM test1 
WHERE MBRContains(GeomFromText('Polygon((0 0,0 4,4 4,4 0,0 0))'), data4) 

An SQLfiddle for testing

就作为奖金,在这里是如何写的SQL Server;

SELECT * 
FROM test1 
WHERE geometry::STGeomFromText('Polygon((0 0,0 4,4 4,4 0,0 0))',0) 
      .STContains(data4) = 1 

Another SQLfiddle

+0

感谢您的帮助。我正在编写SQL Server函数 – PhantomM 2013-03-01 19:18:46