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快樂幫,.. ... :) –