码迷,mamicode.com
首页 > 数据库 > 详细

SQL Server语句查询指定位置(经纬度)范围内信息

时间:2017-11-03 19:08:07      阅读:374      评论:0      收藏:0      [点我收藏+]

标签:height   sel   href   blank   cas   数据表   select   idt   order   

指定一个经纬度,给定一个范围值,查出在经纬度周围这个范围内距离最近的5组数据。 
经度:116.312785
纬度:39.929875
范围:1度(111公里)
LONG为数据表经度字段 
LAT为数据表纬度字段 

CENTER为数据表
该语句在SQL Server下测试通过,其他数据库可能需要修改 
技术分享

 SELECT
TOP 5 *, ACOS(
SIN(
(39.929875 * PI()) / 180
) * SIN(
(LAT * PI()) / 180
) COS(
(39.929875 * PI()) / 180
) * COS(
(LAT * PI()) / 180
) * COS(
(116.312785 * PI()) / 180 - (LONG * PI()) / 180
)
) * 6380 AS aa
FROM
CENTER
WHERE
LAT  > 39.929875  - 1
AND LAT <39.929875 1
AND LONG >116.312785  - 1
AND LONG < 116.312785 1
ORDER BY aa 
 
---------------------------------------------------------------------------------------
若数据类型不是float型,需要转换为float型:CAST(LAT AS FLOAT)

SQL Server语句查询指定位置(经纬度)范围内信息

标签:height   sel   href   blank   cas   数据表   select   idt   order   

原文地址:http://www.cnblogs.com/namexiaoqi/p/7779147.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!