sql查询1公里范围内的商家?
商家表 company
字段名如下:
ID 名称 经度 纬度  
如果查询当前地点(经度,纬度)一公里范围内的商家有哪些?如果查询?
------解决方案--------------------
SQL2008的,可以直接用 geography 数据的函数来解决
http://msdn.microsoft.com/zh-cn/library/bb933952(v=sql.100).aspx
SQL SERVER 根据地图经纬度计算距离的公式
go  
--创建经纬度距离计算函数
  CREATEFUNCTION [dbo].[fnGetDistance]  
  --LatBegin 开始经度
  --LngBegin 开始维度
(@LatBegin REAL, @LngBegin REAL, @LatEnd REAL, @LngEnd REAL)  
      RETURNSFLOAT
      AS
BEGIN
      --距离(千米)
      DECLARE @Distance      REAL
      DECLARE @EARTH_RADIUS  REAL
      SET @EARTH_RADIUS = 6378.137       
      DECLARE @RadLatBegin  REAL,
              @RadLatEnd    REAL,
              @RadLatDiff   REAL,
              @RadLngDiff   REAL     
      SET @RadLatBegin = @LatBegin *PI()/ 180.0  
      SET @RadLatEnd = @LatEnd *PI()/ 180.0  
      SET @RadLatDiff = @RadLatBegin - @RadLatEnd  
      SET @RadLngDiff = @LngBegin *PI()/ 180.0 - @LngEnd *PI()/ 180.0       
      SET @Distance = 2 *ASIN(
              SQRT(
                  POWER(SIN(@RadLatDiff / 2), 2)+COS(@RadLatBegin)*COS(@RadLatEnd)  
                  *POWER(SIN(@RadLngDiff / 2), 2)
              )
          )     
      SET @Distance = @Distance * @EARTH_RADIUS  
      --SET @Distance = Round(@Distance * 10000) / 10000       
      RETURN @Distance
END