2015-05-22 5 views
0

Я обновляю таблицу с некоторыми значениями с условием пути геометрии.SQL Server 2008 R2: Преобразование типа данных varchar в геометрию

Вот в следующем примере: я передаю имя таблицы @Table, @ColumnA (для установки новых значений), @GeoPath (проверить в условие) для динамического scipt, как показано ниже:

@Table = 'Table1' 

@ColumnA = 'A' 

@GeoPath = 0xE610000001040500000061574D5E31433140000000003EAF52405E3B0D825B92314000000000AACA52407BEECBC0FB263140000000001 

SET @query = 'Update ['[email protected]+'] 
       SET ColumnA = '''[email protected]+''' 
       WHERE CONVERT(Geometry,'+CAST(@GeoPath AS varchar(MAX))+').STIntersects(geometry::Point(Latitude,Longitude, 4326))= 1'; 
PRINT(@query); 

EXECUTE(@query); 

Но получаю ошибку:

Error converting data type varchar to geometry.

+0

Что имеется в ваших переменных? – Paddy

+0

@ Падди, ладно! Позвольте мне изменить его. – MAK

+0

@Paddy, Пожалуйста, проверьте отредактированный пост. – MAK

ответ

0

при работе с GEOGRAPHY или GEOMETRY вам нужно указать дополнительную информацию, а не просто преобразование из одного типа другому.

Например, это преобразование двоичных данных многоугольника обратно в тип географии.

DECLARE @g geography; 
SET @g = geography::STPolyFromWKB(0x01030000000100000005000000F4FDD478E9965EC0DD24068195D3474083C0CAA145965EC0508D976E12D3474083C0CAA145965EC04E62105839D44740F4FDD478E9965EC04E62105839D44740F4FDD478E9965EC0DD24068195D34740, 4326); 
SELECT @g 

здесь же пример, но на этот раз из текста

DECLARE @g_text geography; 
SET @g_text = geography::STPolyFromText('POLYGON ((-122.358 47.653, -122.348 47.649, -122.348 47.658, -122.358 47.658, -122.358 47.653))', 4326); 
SELECT @g_text 

Я не уверен, какой тип двоичных данных, у вас есть для того, чтобы преобразовать его. Просто убедитесь, что вы используете правильный метод преобразования.

Подробнее о geography::STPolyFromText

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