我有一张表格,其中包含来自图像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坐标在范围内。我错过了什么吗?
答案 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)
我猜有时只需要第二双眼睛就可以了:)