当前位置:首页 > MSSQL > 正文内容

SQL通过经度和纬度(已知的一个点)来查询方圆4km内符合条件的信息

canca12年前 (2013-09-14)MSSQL496
我想通过 经度和纬度(已知的一个点)来查询方圆4km内符合条件的信息,想通过公式d=r*arccos[cos(y1)*cos(y2)*cos(x1-x2)+sin(y1)*sin(y2)]计算出d,然后把计算出来的d作为一列,然后条件查询,最后再将距离以字符串的形式显示出来,应该怎样实现啊?
--lng 经度 竖  lat 维度 横
declare @lat float
declare @lng float
set @lat=120.382476
set @lng=36.06733

SELECT SightName, 6371 *ACOS(cos(@lat) * cos(lng) * cos(@lng - lat ) + sin(@lat) * sin(lng)) as Dist
  FROM Geffan_Sight
where 6371*ACOS(cos(@lat) * cos(lng)* cos(@lng - lat ) + sin(@lat) * sin(lng)) < 1000 order by 6371 *ACOS(cos(@lat) * cos(lng) * cos(@lng - lat ) + sin(@lat) * sin(lng)) asc
go

扫描二维码推送至手机访问。

版权声明:本文由Ant.Master's Blog发布,如需转载请注明出处。

本文链接:https://iant.work/post/132.html

标签: MSSQL
分享给朋友:

“SQL通过经度和纬度(已知的一个点)来查询方圆4km内符合条件的信息” 的相关文章

EXISTS与IN的区别

网上查了很多关于这两个单词的用法,说法很多,但大同小异,现在归纳如下: 关于EXISTS与IN的区别:EXISTS检查是否有结果,判断是否有记录,返回的是一个布尔型(TRUE/FALSE)。IN是对结果值进行比较,判断一个字段是否存在于几个值的范围中,所以 EXISTS ...

left join,inner join,right join,cross join,full join的区别

  1,总论: LEFT JOIN返回”first_table”中所有的行尽管在” second_table”中没有相匹配的数据。 RIGHT JOIN返回”second_table”中所有的行尽管在”first_table”中没有相匹配的数据。 INNER JOIN返回的结果集...

left join/right join/inner join操作演示

表A记录如下:aID        aNum1           a200501112   &nb...

SQL操作全集

下列语句部分是Mssql语句,不可以在access中使用。 SQL分类: DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT) DCL—数据控制语言(GRANT,REVOKE,COMMI...

MSSQL & Oracle 高效统计记录数

你用的什么数据库? MS SQLSERVER:,可以从系统表中快速获取 select rows from sysindexes where id = object_id(tablename) and indid in (0,1) Oracle: SELECT USER_TABLES.TABLE_NA...

两表关联统计

表1id name1  小王2  小李 表2id tid address1   1    shanhai2   1    baijin 怎样写出这样的视图呢?id 名称 地址总数1...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。