1
我有一個表有一欄郵編參數化的SQL查詢郵政編碼和半徑不工作
即與具有郵政編碼的ID和緯度列和拉鍊碼錶
人經度。
我發現了一系列使用緯度和經度計算球體距離(基本上用於郵編)的函數。我對SQL很陌生,想知道如何在存儲過程中使用這些函數。
緯度功能:
ALTER Function [dbo].[LatitudePlusDistance](@StartLatitude Float, @Distance Float) Returns Float
As
Begin
Return (Select @StartLatitude + Sqrt(@Distance * @Distance/4766.8999155991))
End
經度功能:
ALTER FUNCTION [dbo].[LongitudePlusDistance]
(
@StartLongitude float,
@StartLatitude float,
@Distance float
)
RETURNS Float
AS
begin
RETURN (select @startLongitude + sqrt(@Distance * @Distance/(4784.39411916406*Cos(2*@StartLatitude/114.591559026165)*Cos(2*@StartLatitude/114.591559026165))))
END
begin
RETURN (select @startLongitude + sqrt(@Distance * @Distance/(4784.39411916406*Cos(2*@StartLatitude/114.591559026165)*Cos(2*@StartLatitude/114.591559026165))))
END`
計算距離函數
`ALTER Function [dbo].[CalculateDistance]
(@Longitude1 Decimal(8,5),
@Latitude1 Decimal(8,5),
@Longitude2 Decimal(8,5),
@Latitude2 Decimal(8,5))
Returns Float
As
Begin
Declare @Temp Float
Set @Temp = sin(@Latitude1/57.2957795130823) * sin(@Latitude2/57.2957795130823) + cos(@Latitude1/57.2957795130823) * cos(@Latitude2/57.2957795130823) * cos(@Longitude2/57.2957795130823 - @Longitude1/57.2957795130823)
if @Temp > 1
Set @Temp = 1
Else If @Temp < -1
Set @Temp = -1
Return (3958.75586574 * acos(@Temp))
End`
我想這樣的事情...
Declare @Longitude Decimal(8,5)
Declare @Latitude Decimal(8,5)
Select @Longitude = Longitude,
@Latitude = Latitude
From ZipCodes
Where ZipCode = '20013'
Declare @Distance int
Select persons.personName, ZipCodes.City, dbo.CalculateDistance(@Longitude, @Latitude, ZipCodes.Longitude, ZipCodes.Latitude) As Distance
From persons
Inner Join ZipCodes
On persons.zipcode = ZipCodes.ZipCode
Order By dbo.CalculateDistance(@Longitude, @Latitude, ZipCodes.Longitude, ZipCodes.Latitude)
WHERE dbo.CalculateDistance(@Longitude, @Latitude, ZipCodes.Longitude, ZipCodes.Latitude) As Distance <= @Distance
我試過這個只是爲了過濾參數化搜索半徑之外的人,它不起作用。說有一個「關鍵字附近的語法不正確‘其中’
這還不包括我的願望在爲郵編參數扔所以不是:
其中郵政編碼=‘20013’
我想是這樣的:
其中郵政編碼= @zipcode
,但它說我需要聲明zscalar變量@zipcode不管在哪裏我試圖做到這一點...我不斷收到同樣的錯誤
感謝您的幫助
試過了。我全部拿出了這個命令的子句。似乎沒有工作。也沒有要求我輸入@distance輸入。 – user2369145
剛剛編輯了查詢。新增set @Distance = 5。從那裏你可以設置你的距離。 –
仍然不起作用:(我應該說(希望這將有助於診斷問題)我正在使用vb web開發人員,我只是在「新查詢」嚮導中嘗試這一切。是否有所作爲? – user2369145