0

我试图在我的数据库中插入一些坐标,但每次我这样做时它只是<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>吗?

4

1 回答 1

0

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

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

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

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

select @var.ToString()
于 2013-04-27T06:10:29.053 回答