我正在尝试构建一个商店定位器,但在形成我的 sql 语句时遇到了麻烦。到目前为止,我有以下几点:
SELECT TOP 3 Custno
, ( 3959
* acos( cos( radians(36) )
* cos( radians( Latitude ) )
* cos( radians( Longitude ) - radians(120) )
+ sin( radians(120) ) * sin( radians( Latitude ) )
)
) AS distance
FROM Customers
ORDER BY distance
当我运行该语句时,我得到:
Msg 0, Level 11, State 0, Line 0
A severe error occurred on the current command.
The results, if any, should be discarded.
但是,当我删除 order by 子句以及更改 order by 子句以使用 Custno 时,查询会起作用。是什么导致了这个错误,我该如何避免它?
最佳答案
从 SQL Server 2008 开始,有一种 Geography 数据类型专为这样的事情而设计。这是几个链接:
http://msdn.microsoft.com/en-us/library/ff929109.aspx
http://blogs.msdn.com/b/isaac/archive/2008/10/23/nearest-neighbors.aspx
关于sql-server - 使用纬度和经度按距离排序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17250847/