これがバグなのか、それとも私が何か間違ったことをしているのか、誰か確認してもらえますか?
私はこのストアドプロシージャを持っています(SQL Server 2008)
ALTER PROCEDURE [dbo].[Distance]
@origin varchar(50),@destination varchar(50),@unit varchar(5)
as
declare @or geography, @dest geography
SET @or = (select Location from [dbo].Promotion where Name=@origin )
SET @dest = (select Location from [dbo].Promotion where Name=@destination )
IF @unit='miles'
SELECT @or.STDistance(@dest)/1609.344
ELSE
--Else show the distance in km
SELECT @or.STDistance(@dest)/1000
場所はデータベースの地理データ型です
そして、私はデータベースにこの住所を持っています
Latitude Longitude
1 -34.612654 -58.463586
2 -34.592802 -58.454317
3 -34.597889 -58.617949
次に、これを実行します:
execute dbo.Distance 'Number 1','Number 2','km'
returns 2653.49845233371 kms
execute dbo.Distance 'Number 1','Number 3','km'
returns 17.2155414117145 kms
最初のケースで Google マップにアクセスすると、これらの座標間の距離は約 4 km で、2 番目の比較は問題ないようです。
なぜ最初のものはそんなに間違っているのですか?SQL Server のバグですか?
前もって感謝します。ギレルモ。