mysql stdistance_SQL Server 利用 geography 计算地理位置距离、距我最近排序

本文介绍了在SQL Server中如何利用geography数据类型存储和计算地理位置距离。通过geography::STPointFromText函数插入经纬度,然后使用字段.STDistance方法计算与指定位置的距离,进行排序。示例查询展示了限制在1000公里范围内并按距离排序的城市。
摘要由CSDN通过智能技术生成

SQL Server 有个字段类型为 geography,这个类型存经纬度,就可以利用经纬度排序了。

(注意,还有一个近似类型:geometry,这个是用来计算二维平面的,不适合经纬度)

如何往 geography 存储值?

insert into citys(cityName, geo) values('北京', geography::STPointFromText('POINT (116.555963 39.711394)', 4326));

insert into citys(cityName, geo) values('上海', geography::STPointFromText('POINT (121.560028 31.175737)', 4326));

insert into citys(cityName, geo) values('广州', geography::STPointFromText('POINT (113.465217 23.087146)', 4326));

insert into citys(cityName, geo) values('深圳', geography::STPointFromText('POINT (114.090725 22.507165)', 4326));

insert into citys(cityName, geo) values('成都', geography::STPointFromText('POINT (104.137788 30.524926)', 4326));

insert into citys(cityName, geo) values('杭州', geography::STPointFromText('POINT (120.382601 30.157892)', 4326));

insert into citys(cityName, geo) values('重庆', geography::STPointFromText('POINT (106.603025 29.532371)', 4326));

insert into citys(cityName, geo) values('武汉', geography::STPointFromText('POINT (114.403479 30.556776)', 4326));

利用的是 geography::STPointFromText()。

第一个参数 POINT() 里面再跟经度、纬度。

第二个参数 4326 代表 GCS-WGS-1984 坐标系。具体本文后面会列出相关链接。

如何查询?

declare @currentLocation geography

select @currentLocation = geography::STPointFromText('POINT (114.403479 30.556776)', 4326)

select *, geo.STDistance(@currentLocation) as 距离 from citys

where geo.STDistance(@currentLocation) < 1000000

order by geo.STDistance(@currentLocation)

这个 SQL 语句利用 geo.STDistance(@currentLocation)  < 1000000 限定了 1000 公里以内的数据,然后按由近到远排序。

关键词总结

geography::STPointFromText

字段.STDistance

POINT

相关阅读

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值