使用between发出过滤浮点值

时间:2015-08-27 16:52:38

标签: sql tsql exif

我有一张表格,其中包含来自图像EXIF数据的GPS坐标。当我使用T-SQL between查询数据时,我希望返回的记录不在结果集中。

在此示例中,@threshold的{​​{1}}值被过度夸大以清楚地显示问题。

1

三个陈述的结果是

declare @newGpsLat as float = 45.600344444447096
declare @newGpsLng as float = -122.59500833299424

declare @threshold as float = 1.0


select 
@newGpsLat + @threshold, 
@newGpsLat - @threshold,
@newGpsLng + @threshold,
@newGpsLng - @threshold

select tm.Id,tm.ExifGpsLatitude, tm.ExifGpsLongitude from TripMedia tm
where   tm.ExifGpsLatitude between (@newGpsLat - @threshold) and (@newGpsLat + @threshold)
and     tm.ExifGpsLatitude between (@newGpsLng - @threshold) and (@newGpsLng + @threshold)

select tm.Id, tm.ExifGpsLatitude, tm.ExifGpsLongitude from TripMedia tm

我希望第二个查询返回ID 13,15和17,因为它们的lat / lng坐标在范围内。我错过了什么吗?

1 个答案:

答案 0 :(得分:1)

查询中有一个简单的印刷错误,第三行使用ExifGpsLatitude时应该是ExifGpsLongitude

select tm.Id,tm.ExifGpsLatitude, tm.ExifGpsLongitude from TripMedia tm
where   tm.ExifGpsLatitude between (@newGpsLat - @threshold) and (@newGpsLat + @threshold)
and     tm.ExifGpsLongitude between (@newGpsLng - @threshold) and (@newGpsLng + @threshold)

我猜有时只需要第二双眼睛就可以了:)