2013-03-01 98 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