You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL无法查询到已存在的Lat&Lng记录的原因排查

MySQL无法查询到已存在经纬度记录的常见原因

针对你执行的查询语句:

select id from addresses where lat = "42.5632172" and lng = "27.5266380"

返回空结果但实际记录存在的情况,常见原因如下:

  • 字段类型与查询值类型不匹配
    如果lat和lng是数值类型(比如DECIMAL、FLOAT或DOUBLE),用字符串格式的数值进行等值匹配时,MySQL会进行隐式类型转换,可能导致精度丢失或匹配失败。建议直接用数值格式查询:

    select id from addresses where lat = 42.5632172 and lng = 27.5266380
    
  • 浮点/小数类型的精度问题
    若lat、lng是FLOAT或DOUBLE类型,这类浮点类型本身存在精度限制,存储的数值可能和显示值有细微差异(比如实际存储42.563217200000003),直接用=精确匹配会失败。可以改用范围查询或ROUND函数控制精度:

    -- 范围查询(根据实际精度调整误差范围)
    select id from addresses where lat between 42.5632171 and 42.5632173 
      and lng between 27.5266379 and 27.5266381;
    -- 或使用ROUND函数
    select id from addresses where ROUND(lat,7) = 42.5632172 and ROUND(lng,7) = 27.5266380;
    
  • 字段存在隐藏空白字符
    如果lat和lng是字符串类型(比如VARCHAR),存储的数值可能带有前后空格或不可见字符,直接匹配纯数值字符串会失败。尝试用TRIM函数去除空格后查询:

    select id from addresses where TRIM(lat) = "42.5632172" and TRIM(lng) = "27.5266380";
    
  • 显示值与实际存储值不一致
    数据库工具可能会对数值格式化显示(比如截断末尾零或四舍五入),但实际存储的数值更长。可以先通过记录ID查询原始存储值确认:

    select id, lat, lng from addresses where id = [对应记录的ID];
    

    查看返回的lat和lng是否和你查询的数值完全一致。

内容的提问来源于stack exchange,提问作者Europeuser

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 10:02:02