V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
wanderingFaker
V2EX  ›  问与答

sql 语句 怎样实习 查找出坐标最相似的一条数据呢

  •  
  •   wanderingFaker · 2016-10-10 17:14:43 +08:00 · 1698 次点击
    这是一个创建于 2967 天前的主题,其中的信息可能已经有所发展或是发生改变。
    5 条回复    2016-10-10 19:26:19 +08:00
    wesley
        1
    wesley  
       2016-10-10 17:18:11 +08:00
    计算距离最近的
    wanderingFaker
        2
    wanderingFaker  
    OP
       2016-10-10 17:27:44 +08:00
    @wesley 嗯 我也是这样想的 但怎样实现呢,数据全部取出来再计算比较吗?
    shlabc
        3
    shlabc  
       2016-10-10 17:30:41 +08:00
    CREATE FUNCTION GetDistance
    (
    @GPSLng DECIMAL(12,6),
    @GPSLat DECIMAL(12,6),
    @Lng DECIMAL(12,6),
    @Lat DECIMAL(12,6)
    )
    RETURNS DECIMAL(12,4)
    AS
    BEGIN
    DECLARE @result DECIMAL(12,4)
    SELECT @result = 6378137.0*ACOS(SIN(@GPSLat/180*PI())*SIN(@Lat/180*PI())+COS(@GPSLat/180*PI())*COS(@Lat/180*PI())*COS((@GPSLng-@Lng)/180*PI()))
    RETURN @result
    END
    GO

    这是一个在网上找的 SQL Server 的 2 个地图标记距离计算函数,实测有效,具体调用这个函数的 SQL 语句自己写即可, mysql 版、 oracle 版都可类似修改
    akira
        4
    akira  
       2016-10-10 17:33:48 +08:00
    mysql 5.6 以后 支持坐标类型和坐标距离计算了
    mcfog
        5
    mcfog  
       2016-10-10 19:26:19 +08:00
    补充楼上,

    mysql 版本老的话,存 geohash 字符串前缀 like
    不限 mysql 的话, redis / mongo 都支持
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   936 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 748ms · UTC 22:20 · PVG 06:20 · LAX 14:20 · JFK 17:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.