Sql server 使用纬度和经度按距离排序
我正在尝试构建一个存储定位器,但在生成sql语句时遇到了问题。到目前为止,我有以下几点:Sql server 使用纬度和经度按距离排序,sql-server,Sql Server,我正在尝试构建一个存储定位器,但在生成sql语句时遇到了问题。到目前为止,我有以下几点: SELECT TOP 3 Custno , ( 3959 * acos( cos( radians(36) ) * cos( radians( Latitude ) ) * cos( radians( Longitude ) - radians(120) ) + sin( radians(120) ) * s
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.
但是,当我删除ORDERBY子句以及将ORDERBY子句更改为使用Custno时,查询就会工作。导致此错误的原因是什么?如何避免此错误?从SQL Server 2008开始,有一种地理数据类型专门针对此类情况设计。这里有几个链接:
错误日志中是否有更多详细信息?在ManagementStudio中根据以下说明查找错误日志:我无权访问错误日志,我只能访问服务器上的一个数据库。customers表是否庞大?或者您可以将计算出的距离插入临时表中吗?这不是为了生产,只是为了调试问题。距离将根据未存储的邮政编码计算,当我只有一个位置时,我不知道如何存储距离。表中有几千条记录。你检查过查询计划了吗?该错误可能是由计算和排序距离时的堆栈溢出引起的。您是否尝试过将订单拉入超级查询?