SQL Geography数据类型,如何使用它包含的乱码?

时间:2015-04-14 21:11:31

标签: sql sql-server sqlgeography

我正在查看sql地理数据类型,它看起来并不直观,而且我找不到很多好处(或者更容易理解"#34;易于理解&#34 ;)有关它的信息。例如(从一个我发现稀疏地谈论它的网站上'部分')

INSERT INTO [dbo].[visitorLocationInfo](id, test)
VALUES(3, 
  geography::STPointFromText('POINT(55.9523783996701 -3.2051030639559)', 4326)
);

我得到的是第一个是lat,第二个是long,但是(4326)的第三个值是什么以及我应该如何使用它放入的结果?

id  latitude    longitude   zip     city    state   country test
3   NULL        NULL        NULL    NULL    NULL    NULL    0xE6100000010CF9FF3F130DA409C0FDFF0F89E7F94B40

这个长数字不太可读......

也许我只需要花5分钟时间让我参加镍之旅?

2 个答案:

答案 0 :(得分:2)

我对此并不熟悉,但在列上it seems you can call ToString以获取文本表示:

select test.ToString()
from   tableName

答案 1 :(得分:2)

地理数据类型实现为CLR类型。这意味着它就像编程世界中的对象。因此,您可以在其上调用all sorts of methods。你所看到的是对象的十六进制表示。

在回答你关于距离等问题时,你是对的。如果您的表格中包含地理类型的列,则可以执行以下操作:

declare @g geography = 
    geography::STPointFromText(
      'POINT(55.9523783996701 -3.2051030639559)', 4326
    ).STBuffer(5);

select *
from dbo.yourTable
where gCol.STIntersects(@g) = 1

其中说“让我获取dbo.yourTable中的所有行,其中gCol列中包含的地理对象的某些部分位于55.9523783996701 -3.2051030639559的5米范围内。”