首页 运维知识 关于mysql oracle计算两点之间的距离

关于mysql oracle计算两点之间的距离

mysql函数: SET FOREIGN_KEY_CHECKS=0; DROP FUNCTION IF EXISTS `getDistance`; DELIMITER ;; CRE…

mysql函数:

SET FOREIGN_KEY_CHECKS=0;

DROP FUNCTION IF EXISTS `getDistance`;
DELIMITER ;;
CREATE DEFINER=`root`@`%` FUNCTION `getDistance`(`lng1` decimal,`lat1` decimal,`lng2` decimal,`lat2` decimal) RETURNS decimal(18,2)
BEGIN
RETURN round(6378.138*2*asin(sqrt(pow(sin( (lat1*pi()/180-lat2*pi()/180)/2),2)+cos(lat1*pi()/180)*cos(lat2*pi()/180)* pow(sin( (lng1*pi()/180-lng2*pi()/180)/2),2)))*1000);
END
;;
DELIMITER ;

oracle函数:

CREATE OR REPLACE
FUNCTION getDistance(lng1 in number,lat1 in number,lng2 in number,lat2 in number)
RETURN number
as
BEGIN
return round(6378.138*2*asin(sqrt(power(sin( (lat1*ACOS(-1)/180-lat2*ACOS(-1)/180)/2),2)+cos(lat1*ACOS(-1)/180)*cos(lat2*ACOS(-1)/180)* power(sin( (lng1*ACOS(-1)/180-lng2*ACOS(-1)/180)/2),2)))*1000);
END;

后台代码mybatis中调用:

select getDistance(目的地经度,目的地纬度,现在位置经度,现在位置纬度) from table_name;

java版本:

/**
* 计算2个经纬度之间的距离
* @param lon1 起始经度
* @param lat1 起始纬度
* @param lon2 目标经度
* @param lat2 目标纬度
* @return 2点之间的距离,单位千米
*/
public static float getDistance(double lon1, double lat1, double lon2, double lat2){
return Math.round(6378.138*2*Math.asin(Math.sqrt(Math.pow(Math.sin((lat1*Math.PI/180-lat2*Math.PI/180)/2),2)+Math.cos(lat1*Math.PI/180)*Math.cos(lat2*Math.PI/180)* Math.pow(Math.sin((lon1*Math.PI/180-lon2*Math.PI/180)/2),2))));
}

public static void main(String[] args) {
System.out.println(getDistance(93.46,29.44,93.59,29.44));
}

字符串数字转换数字类型

select max(cast(id as UNSIGNED INTEGER)) as id from table

免责声明:文章内容不代表本站立场,本站不对其内容的真实性、完整性、准确性给予任何担保、暗示和承诺,仅供读者参考,文章版权归原作者所有。如本文内容影响到您的合法权益(内容、图片等),请及时联系本站,我们会及时删除处理。

作者: 小小编

为您推荐

dell R710 更换raid卡后,raid卡信息没有了,处理方案

dell R710 更换raid卡后,raid卡信息没有了,处理方案

1.将一台服务器(A)的硬盘依次拔出,按相同顺序插入另一台同样配置的服务器(B) 2.启动服务器(B) 3.按提示键盘按...
PL SQL Developer 13连接Oracle数据库并导出数据详细操作教程方法

PL SQL Developer 13连接Oracle数据库并导出数据详细操作教程方法

下载 并安装 PL SQL Developer 13,默认支持中文语言 ========================...
关于一条sql语句在mysql中是如何执行的

关于一条sql语句在mysql中是如何执行的

最近开始在学习mysql相关知识,自己根据学到的知识点,根据自己的理解整理分享出来,本篇文章会分析下一个sql语句在my...
关于sql注入姿势总结(mysql)

关于sql注入姿势总结(mysql)

前言 学习了sql注入很长时间,但是仍然没有系统的了解过,这次总结一波,用作学习的资料。 从注入方法分:基于报错、基于布...
关于Oracle SQL外连接

关于Oracle SQL外连接

SQL提供了多种类型的连接方式,它们之间的区别在于:从相互交叠的不同数据集合中选择用于连接的行时所采用的方法不同。 连接...

发表回复

返回顶部