有人可以确认这是一个错误还是我做错了?SQL Server地理中的错误?
我有这个存储过程(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 [email protected])
SET @dest = (select Location from [dbo].Promotion where [email protected])
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公里,而第二个比较似乎没有问题。
为什么第一个是如此错误?这是SQL Server中的错误吗?
在此先感谢。吉列尔莫。
使用大型应用程序的第一条规则是数百万人使用 - 该错误在您的代码中。第二条规则 - 该错误在您的代码中。第三条规则....你有这个想法;) – Jamiec
我假设位置是一个计算列,基于纬度和经度列?如果是这样,你能给它的定义吗? (如果你可以创建一个简单的表,使用INSERT来填充你的样本数据,并且用一个简单的查询来产生结果,那么其他人就可以重现这个结果会容易得多) –