0
这是一个垃圾拍摄,但我想我会挑选更有经验的大脑。t-SQL:选择语句内部的地理POINT字符串
正如您可能知道的那样,您可以使用下面的查询来查找两组坐标之间的距离。
DECLARE @source geography = 'POINT(-93.54803 39.790132)'
DECLARE @target geography = 'POINT(-105.0207 39.9652)'
SELECT @source.STDistance(@target)/1609.344 AS distance_in_miles
我就想办法找到两个邮政编码之间的距离,而不必使用haversine公式,所以我写了这个:
DECLARE @source GEOGRAPHY
DECLARE @target GEOGRAPHY
DECLARE @Szip VARCHAR(10) = '64601'
DECLARE @Ezip VARCHAR(10) = '80023'
SET @source = (SELECT longitude+ ' ' +latitude FROM us_loc_data WHERE @Szip = zip)
SET @target = (SELECT longitude+ ' ' +latitude FROM us_loc_data WHERE @Ezip = zip)
SELECT @source.STDistance(@target)/1609.344 AS distance_in_miles
我没想到上面会工作,它并没有因为这个原因工作:
消息6522,级别16,状态1,行的用户定义的例程或聚合“地理”执行过程中出现5 一个.NET Framework错误: System.FormatException: 24114:Th在输入众所周知的文本(WKT)中的e标签-93.54803 39.790132无效。
我目前的理解是,为了真正起作用,在括号中封装的一对坐标需要夹在字符串开始处的带POINT的引号之间。
我想知道我正在尝试做什么是远程可能的。 我可以以某种方式将选择语句分配给我的变量(@source & @target)以查询坐标而不是明确指定哪个坐标我想要使用?
再次感谢您对我的帮助,再次:) –
@AnthonySims快乐帮,.. ... :) –