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

如何在SQL中实现类似LIKE函数的近邻数值(含小数)查询

解决FLOAT坐标按前缀匹配的问题

方法1:将FLOAT转为字符串后使用LIKE

把浮点型坐标转换为字符串类型,再用LIKE匹配前缀。针对参考坐标(67.1, -69.2),示例SQL语句如下:

SELECT * 
FROM your_table
WHERE CAST(lat AS VARCHAR) LIKE '67.1%' 
  AND CAST(lng AS VARCHAR) LIKE '-69.2%';

注意不同数据库的字符串转换语法有差异:MySQL用CAST(lat AS CHAR),PostgreSQL用lat::TEXT,SQL Server用CAST(lat AS NVARCHAR(20))。

方法2:通过数值计算实现前缀匹配

无需转换字符串,利用区间筛选匹配前缀的坐标。以参考坐标为例,纬度需满足67.1 ≤ lat < 67.2,经度需满足-69.3 < lng ≤ -69.2,适配五位小数的精度可微调区间:

SELECT * 
FROM your_table
WHERE lat BETWEEN 67.1 AND 67.2 - 0.00001
  AND lng BETWEEN -69.3 + 0.00001 AND -69.2;

方法3:保留指定小数位数后匹配

将坐标截断或四舍五入到参考坐标的小数位数,再直接对比数值,避免字符串转换的格式问题:

-- MySQL截断到1位小数
SELECT * 
FROM your_table
WHERE TRUNCATE(lat, 1) = 67.1
  AND TRUNCATE(lng, 1) = -69.2;

-- PostgreSQL四舍五入到1位小数
SELECT * 
FROM your_table
WHERE ROUND(lat, 1) = 67.1
  AND ROUND(lng, 1) = -69.2;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 20:39:19