SQL中使用经纬度查询数据的写法
使用场景是给定一个经纬度,查询以此经纬度为圆心,指定距离范围内的所有符合条件的数据
话不多说,看代码示例:
sqrt(
(
((
#{ longitude }- o.LONGITUDE
) * ACOS( - 1 ) * 12656 * cos((( #{ longitude }+ o.LONGITUDE ) / 2 ) * ACOS( - 1 ) / 180 ) / 180
) * ((
#{ longitude }- o.LONGITUDE
) * ACOS( - 1 ) * 12656 * cos((( #{ longitude }+ o.LONGITUDE ) / 2 ) * ACOS( - 1 ) / 180 ) / 180
)
) + (
(( #{ latitude }- o.LATITUDE ) * ACOS( - 1 ) * 12656 / 180 ) * (( #{ latitude }- o.LATITUDE ) * ACOS( - 1 ) * 12656 / 180 )
)
) AS distance
其中#{ longitude }和#{ latitude }是你传入的经纬度数据,可以将此段查询放在查询结果中,然后在where中限制distance的范围即可