Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 使用纬度和经度按距离排序_Sql Server - Fatal编程技术网

Sql server 使用纬度和经度按距离排序

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

我正在尝试构建一个存储定位器,但在生成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.

但是,当我删除ORDERBY子句以及将ORDERBY子句更改为使用Custno时,查询就会工作。导致此错误的原因是什么?如何避免此错误?

从SQL Server 2008开始,有一种地理数据类型专门针对此类情况设计。这里有几个链接:


错误日志中是否有更多详细信息?在ManagementStudio中根据以下说明查找错误日志:我无权访问错误日志,我只能访问服务器上的一个数据库。customers表是否庞大?或者您可以将计算出的距离插入临时表中吗?这不是为了生产,只是为了调试问题。距离将根据未存储的邮政编码计算,当我只有一个位置时,我不知道如何存储距离。表中有几千条记录。你检查过查询计划了吗?该错误可能是由计算和排序距离时的堆栈溢出引起的。您是否尝试过将订单拉入超级查询?