1.2点之间的距离

DELIMITER $$

USE `db`$$

DROP FUNCTION IF EXISTS `distance2point`$$

CREATE DEFINER=`root`@`localhost` FUNCTION `distance2point`(`lng1` DOUBLE ,`lat1` DOUBLE ,`lng2` DOUBLE ,`lat2` DOUBLE) RETURNS DOUBLE

BEGIN

RETURN 2 * 6378137*ASIN(SQRT(POW(SIN(PI()*(lat1-(lat2))/360),2)+ COS(PI()*lat1/180)*COS(lat2*PI()/180)*POW(SIN(PI()*(lng1-(lng2))/360),2)));

END$$

DELIMITER ;

2.自动生成uuid

DELIMITER $$

USE `db`$$

DROP FUNCTION IF EXISTS `MYUUID`$$

CREATE DEFINER=`root`@`localhost` FUNCTION `myuuid`() RETURNS CHAR(36) CHARSET utf8

BEGIN

DECLARE my_uuid CHAR(36);

SET my_uuid = UUID();

RETURN REPLACE(my_uuid,'-','_');

END$$

DELIMITER ;

3显示城市全名称

根据city_type,cityCode查询

DELIMITER $$

USE `mydb`$$

DROP FUNCTION IF EXISTS `full_city_name`$$

CREATE DEFINER=`root`@`%` FUNCTION `full_city_name`(city_type INT,cityCode VARCHAR(30)) RETURNS VARCHAR(50) CHARSET utf8

BEGIN

DECLARE pname VARCHAR(50) DEFAULT '';

DECLARE cname VARCHAR(50) DEFAULT '';

DECLARE aname VARCHAR(50) DEFAULT '';

DECLARE t VARCHAR(50) DEFAULT '';

DECLARE t1 VARCHAR(50) DEFAULT '';

SELECT city_name INTO aname FROM bd_city WHERE city_code =cityCode;

IF city_type=0 THEN

SET pname=aname;

ELSEIF city_type=1 THEN

SET t=SUBSTRING(cityCode,1, 2);

SET t1=CONCAT(t,'0000');

SELECT city_name INTO pname FROM bd_city WHERE city_code =t1 ;

SET pname=CONCAT(pname,'-',aname);

ELSEIF city_type=2 THEN

SET t=SUBSTRING(cityCode,1, 2);

SET t1=CONCAT(t,'0000');

SELECT city_name INTO pname FROM bd_city WHERE city_code =t1 ;

SET t=SUBSTRING(cityCode,1, 4);

SET t1=CONCAT(t,'00');

SELECT city_name INTO cname FROM bd_city WHERE city_code =t1 ;

SET pname=CONCAT(pname,'-',cname,'-',aname);

END IF;

RETURN pname;

END$$

DELIMITER ;

根据cityId查询

DELIMITER $$

USE `mydb`$$

DROP FUNCTION IF EXISTS `full_city_name1`$$

CREATE DEFINER=`root`@`%` FUNCTION `full_city_name1`(cityId VARCHAR(36)) RETURNS VARCHAR(50) CHARSET utf8

BEGIN

DECLARE cityType INT(1) DEFAULT 0;

DECLARE cityCode VARCHAR(30) DEFAULT '';

DECLARE pname VARCHAR(50) DEFAULT '';

DECLARE cname VARCHAR(50) DEFAULT '';

DECLARE aname VARCHAR(50) DEFAULT '';

DECLARE t VARCHAR(50) DEFAULT '';

DECLARE t1 VARCHAR(50) DEFAULT '';

SELECT city_name,city_code,city_type INTO aname,cityCode,cityType FROM bd_city WHERE city_id =cityId;

IF cityType=0 THEN

SET pname=aname;

ELSEIF cityType=1 THEN

SET t=SUBSTRING(cityCode,1, 2);

SET t1=CONCAT(t,'0000');

SELECT city_name INTO pname FROM bd_city WHERE city_code =t1 ;

SET pname=CONCAT(pname,'-',aname);

ELSEIF cityType=2 THEN

SET t=SUBSTRING(cityCode,1, 2);

SET t1=CONCAT(t,'0000');

SELECT city_name INTO pname FROM bd_city WHERE city_code =t1 ;

SET t=SUBSTRING(cityCode,1, 4);

SET t1=CONCAT(t,'00');

SELECT city_name INTO cname FROM bd_city WHERE city_code =t1 ;

SET pname=CONCAT(pname,'-',cname,'-',aname);

END IF;

RETURN pname;

END$$

DELIMITER ;

3.汉字的首拼音组合字符串

DELIMITER $$

USE `mydb`$$

DROP FUNCTION IF EXISTS `getPY`$$

CREATE DEFINER=`root`@`%` FUNCTION `getPY`(in_string VARCHAR(21845)) RETURNS MEDIUMTEXT CHARSET utf8

BEGIN

DECLARE tmp_str VARCHAR(21845) CHARSET gbk DEFAULT '' ; #截取字符串,每次做截取后的字符串存放在该变量中,初始为函数参数in_string值

DECLARE tmp_len SMALLINT DEFAULT 0;#tmp_str的长度

DECLARE tmp_char VARCHAR(2) CHARSET gbk DEFAULT '';#截取字符,每次 left(tmp_str,1) 返回值存放在该变量中

DECLARE tmp_rs VARCHAR(21845) CHARSET gbk DEFAULT '';#结果字符串

DECLARE tmp_cc VARCHAR(2) CHARSET gbk DEFAULT '';#拼音字符,存放单个汉字对应的拼音首字符

SET tmp_str = in_string;#初始化,将in_string赋给tmp_str

SET tmp_len = LENGTH(tmp_str);#初始化长度

WHILE tmp_len > 0 DO #如果被计算的tmp_str长度大于0则进入该while

SET tmp_char = LEFT(tmp_str,1);#获取tmp_str最左端的首个字符,注意这里是获取首个字符,该字符可能是汉字,也可能不是。

SET tmp_cc = tmp_char;#左端首个字符赋值给拼音字符

IF LENGTH(tmp_char)>1 THEN#判断左端首个字符是多字节还是单字节字符,要是多字节则认为是汉字且作以下拼音获取,要是单字节则不处理。

SELECT ELT(INTERVAL(CONV(HEX(tmp_char),16,10),0xB0A1,0xB0C5,0xB2C1,0xB4EE,0xB6EA,0xB7A2,0xB8C1,0xB9FE,0xBBF7,0xBFA6,0xC0AC

,0xC2E8,0xC4C3,0xC5B6,0xC5BE,0xC6DA,0xC8BB,0xC8F6,0xCBFA,0xCDDA ,0xCEF4,0xD1B9,0xD4D1),

'A','B','C','D','E','F','G','H','J','K','L','M','N','O','P','Q','R','S','T','W','X','Y','Z') INTO tmp_cc; #获得汉字拼音首字符

END IF;

SET tmp_rs = CONCAT(tmp_rs,tmp_cc);#将当前tmp_str左端首个字符拼音首字符与返回字符串拼接

SET tmp_str = SUBSTRING(tmp_str,2);#将tmp_str左端首字符去除

SET tmp_len = LENGTH(tmp_str);#计算当前字符串长度

END WHILE;

RETURN tmp_rs;#返回结果字符串

END$$

DELIMITER ;

总结:使用DELIMITER定义结束字符$$,因为sql语句中使用了分号符;,所以定义use,drop,end等语句的时候,也需要结束符号。所以用DELIMITER定义结束字符。

mysql自定义函数的分号_Mysql自定义函数相关推荐

  1. mysql自定义函数的分号_mysql自定义function问题解决

    最近公司生产环境的系统有个需求,需要往mysql数据库的一张表里批量添加数据,业务部门给的数据大致如下: 中心 3.5L箱子(条码) 8L箱子(条码) 15L箱子(条码) 20L箱子(条码) 浙江物流 ...

  2. mysql自定义函数的分号_MySQL 第八篇:自定义函数、存储过程、游标-阿里云开发者社区...

    我把MySQL的内容整理成9篇博客,学完这9篇博客虽不能说能成为大神,但是应付一般中小企业的开发已经足够了,有疑问或建议的欢迎留言讨论. 自定义函数 一.函数的概念与定义 1.理解函数 函数可以看作是 ...

  3. mysql 日期时间格式化字符串_MySQL日期函数与日期转换格式化函数大全

    Mysql作为一款开元的免费关系型数据库,用户基础非常庞大,本文列出了MYSQL常用日期函数与日期转换格式化函数 1.DAYOFWEEK(date) SELECT DAYOFWEEK('2016-01 ...

  4. mysql开窗函数有哪些_mysql开窗函数

    开窗函数: 它可以理解为记录集合,开窗函数也就是在满足某种条件的记录集合上执行的特殊函数. 对于每条记录都要在此窗口内执行函数,有的函数随着记录不同,窗口大小都是固定的,这种属于静态窗口: 有的函数则 ...

  5. mysql带中文日期转换_MySQL日期函数与日期转换格式化函数大全

    Mysql作为一款开元的免费关系型数据库,用户基础非常庞大,本文列出了MYSQL常用日期函数与日期转换格式化函数 1.DAYOFWEEK(date) 2.WEEKDAY(date) 3.DAYOFMO ...

  6. mysql的排名函数怎么用_MySQL排名函数

    MySQL排名函数 MySQL使用一种排名功能,该函数使我们能够对数据库中分区的每一行进行排名.排名函数还是MySQL窗口函数的一部分. MySQL中的排名函数可以与以下子句一起使用: 他们总是使用O ...

  7. mysql自定义函数的分号_MySQL之自定义函数实例讲解

    转自:https://www.2cto.com/database/201804/740205.html MySQL中已经有很多函数,如时间函数等,但是有时这些函数不能满足自己的设计需求,此时需要自定义 ...

  8. mysql自定义函数的分号_MySQL基础(三)—函数、自定义函数

    上一篇 MySQL基础(二)-操作表记录 这一篇是对函数的笔记,其中操作的数据库在上一篇文章中有代码,可以去看一下. 1.函数 1.1:函数的分类 字符函数 数值运算符与函数 比较运算符与函数 日期时 ...

  9. mysql自定义函数的分号_MySQL基础(三)―函数、自定义函数

    MySQL基础(二)―操作表记录 这一篇是对han的笔记,其中操作的数据库在上一篇文章中有代码,可以去看一下. 字符函数 数值运算符与函数 比较运算符与函数 日期时间函数 信息函数 聚合函数 加密函数 ...

  10. mysql函数保留小数_MySql自定义函数-关于保留小数位的特殊需求

    背景 昨天,关于价格详情接口又来了一个小需求,而且有点特别.价格显示:改为保留两位小数,没错,就是保留两位小数.大家是不是想说这没啥特别的...数据库都有函数搞定了.例如四舍五入的ROUND(x,d) ...

最新文章

  1. 4、SpringBoot 配置和使用定时任务
  2. 【PD】PowerDesigner生成数据字典
  3. ubuntun系统mysql数据库同步_Ubutun 14.10下mysql 主从同步详细操作
  4. Win10 JAVA安装及环境搭建(windows jdk,windows java环境配置)
  5. IEEE 第二届大数据、人工智能与物联网工程国际会议 (IEEE-ICBAIE 2021)
  6. 头脑仅仅是一个实验室
  7. pdf类型转换器打印机
  8. xp计算机考试资源管理,职称计算机WindowsXP必备考点:资源管理器
  9. 用记事本编辑注册表文件
  10. 荣耀magic5和vivox90参数对比 荣耀magic5和vivox90哪个好
  11. 网络协议 11 - Socket 编程(下)
  12. 如何成为一名JAVA(高级)工程师
  13. c++ Macros
  14. 第四期_Metasploit 基础(六)Meterprete《Metasploit Unleashed Simplified Chinese version(Metasploit官方文档教程中文版)》
  15. 简单有效的多标准中文分词详解
  16. 20221223英语学习
  17. ffmpeg 视频截图
  18. FPGA精简版UDP协议实现板间网线传输视频,提供3套工程源码
  19. IT行业需要一个不断学习和勤奋努力的过程[图]
  20. sas libname mysql_SAS--数据操作

热门文章

  1. oracle 范鑫_快速理解数据库中的索引(Indexes in Database)
  2. 怪诞行为学(Predictably Irrational)
  3. 用python.turtle画中国地图
  4. 星星之火-7:从数值空间理解模拟信号、离散信号、数字信号的区别
  5. 计算机英语口语app,最实用五大英语口语app,强烈推荐
  6. 黑盒测试具体有哪些操作步骤?
  7. RPA之家直播公开课
  8. 【无线安全实践入门】破解WiFi密码的多个方法
  9. 解决Linux下adb devices找不到设备
  10. VMware Workstation安装windows xp系统并创建虚拟软盘