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

Смежные вопросы