我正在查看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分钟时间让我参加镍之旅?
答案 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米范围内。”