Mysql中查询20公里内附近商家有以下写法,但是oracle中没有RADIANS这个方法,也就是度数转弧度
latitude :纬度,longitude: 经度
select * from (SELECT
geo_id, name,(
6371 * ACOS (
COS ( RADIANS(33.958887) )
* COS( RADIANS(longitude ) )
* COS( RADIANS( longitude) - RADIANS(118.302416) )
+ SIN ( RADIANS(33.958887) )
* SIN( RADIANS( latitude ) )
)
) AS distance1
FROM geo ) v_geo where distance1>0.2 and distance1 <20
在mysql中上面的语句可以直接查询出,那么在oracle就必须创建函数
RADIANS 方法的公式是 度数/360*2π
那么创建一个函数即可
create or replace function RADIANS (x IN number) return number is
FunctionResult number;
begin
select (x/360)*asin(1)*2*2 into FunctionResult from dual;
return(FunctionResult);
end ;
引用的主要是geogle的附近商家算法