Ms Sql Server 2012中的地理类型是否存储为二进制?

时间:2013-04-26 22:42:03

标签: sql-server geography

我尝试在我的数据库中插入一些坐标,但每次这样做时,它只会在值中显示<Binary data>

我试过

geography::STGeomFromText('LINESTRING(-122.360 47.656, -122.343 47.656)', 4326)
geography::STPointFromText('POINT(55.9523783996701 -3.2051030639559)', 4326)
geography::Point(51.4618933852762, -0.926690306514502, 4326)

仅仅说<Binary data>是否正常?

1 个答案:

答案 0 :(得分:0)

是的,内部UDT(用户定义的类型),即实现geography的方式,被存储为二进制文件,但是,它们被数据库引擎识别为不止于此。

当您访问它时,SQL Server会自动将二进制文件反序列化为.NET对象,并将.NET对象序列化为二进制文件以进行存储。

因此,当您在UDT实例上调用方法时,无论是在变量还是在列中,它们都会按照您的预期进行响应:

declare @var geography = 
       geography::Point(51.4618933852762, -0.926690306514502, 4326);

select @var.ToString()