繁体   English   中英

SQL Server 2008 R2:将数据类型varchar转换为几何

[英]SQL Server 2008 R2: Converting data type varchar to geometry

我正在使用“几何路径条件”用一些值更新表。

在这里,在下面的例子:我传递表的名称作为@Table@ColumnA (用于设置新的值), @GeoPath (在状态检查),用于动态素文字,如下所示:

@Table = 'Table1'

@ColumnA = 'A'

@GeoPath = 0xE610000001040500000061574D5E31433140000000003EAF52405E3B0D825B92314000000000AACA52407BEECBC0FB263140000000001

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

EXECUTE(@query);

但是得到错误:

将数据类型varchar转换为几何体时出错。

在使用GEOGRAPHYGEOMETRY您需要指定更多信息,而不仅仅是从一种类型转换为另一种类型。

例如,这是将多边形二进制数据转换回地理类型。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM