视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
MySQL自定义函数简单用法示例
2020-11-09 20:21:04 责编:小采
文档


本文实例讲述了MySQL自定义函数用法。分享给大家供大家参考,具体如下:

先来一个简单的,创建一个函数将'2009-06-23 00:00:00'这样格式的datetime时间转化为'2009年6月23日0时0分0秒'这样的格式:

DELIMITER $$
DROP FUNCTION IF EXISTS `sp_test`.`getdate`$$
CREATE FUNCTION `sp_test`.`getdate`(gdate datetime) RETURNS varchar(255)
BEGIN
DECLARE x VARCHAR(255) DEFAULT '';
SET x= date_format(gdate,'%Y年%m月%d日%h时%i分%s秒');
RETURN x;
END $$
DELIMITER ;

解析:

第一句是定义一个结束标识符,因为MySQL默认是以分号作为SQL语句的结束符的,而函数体内部要用到分号,所以会跟默认的SQL结束符发生冲突,所以需要先定义一个其他的符号作为SQL的结束符;

第二句是如果这个函数已经存在了,就删除掉,sp_test是数据库的名字,函数是跟数据库相关联的,getdate是函数的名字;

第三句是创建一个函数,()里是参数的名字和类型,RETURNS 定义这个函数返回值的类型;

函数体必须放在BEGIN END之间;

DECLARE 是定义函数体的变量,这里定义一个变量x,默认是空,然后SET给x变量赋值;

RETURN 是返回值,这里把变量x返回,x的类型必须与第三句中定义的返回类型一致。

调用:

SELECT getdate('2009-06-23 00:00:00');

返回 '2009年06月23日00时00分00秒'

分支结构

DELIMITER $$
DROP FUNCTION IF EXISTS `sp_test`.`cutString` $$
CREATE FUNCTION `sp_test`.`cutString`(s VARCHAR(255),n INT) RETURNS varchar(255)
BEGIN
IF(ISNULL(s)) THEN RETURN '';
ELSEIF CHAR_LENGTH(s)<n THEN RETURN s;
ELSEIF CHAR_LENGTH(S)=n THEN RETURN '相等';
ELSE RETURN CONCAT(LEFT(s,n),'...');
END IF;
END $$
DELIMITER ;

解析:

这是一个截取字符串的函数,参数有两个,一个是字符串s,一个是数字n,将字符串s保留前n位,如果字符串的个数小于n,则返回字符串s,如果大于n,则返回前n位后面加...。

调用:

SELECT cutString('abcdefghijklmnopqrstuvwxyz',5);

返回 'abced...'

循环结构

DELIMITER $$
DROP FUNCTION IF EXISTS `sp_test`.`morestar`$$
CREATE FUNCTION `sp_test`.`morestar`(n INT) RETURNS text
BEGIN
DECLARE i INT DEFAULT 0;
DECLARE s TEXT DEFAULT '';
myloop:LOOP
SET i=i+1;
SET s = CONCAT(s,'*');
IF i > n THEN LEAVE myloop;
END IF;
END LOOP myloop;
RETURN s;
END $$
DELIMITER ;

解析:产生n个*。

调用:

SELECT morestar(5);

返回 '*****'

更多关于MySQL相关内容感兴趣的读者可查看本站专题:《MySQL常用函数大汇总》、《MySQL日志操作技巧大全》、《MySQL事务操作技巧汇总》、《MySQL存储过程技巧大全》及《MySQL数据库锁相关技巧汇总》

希望本文所述对大家MySQL数据库计有所帮助。

您可能感兴趣的文章:

  • Mysql常用函数大全(分类汇总讲解)
  • MYSQL自定义函数判断是否正整数的实例代码
  • MySQL中的排序函数field()实例详解
  • MySQL高效模糊搜索之内置函数locate instr position find_in_set使用详解
  • mysql中find_in_set()函数的使用及in()用法详解
  • 详解MySql Date函数
  • MySQL使用集合函数进行查询操作实例详解
  • 详解数据库_MySQL: mysql函数
  • 下载本文
    显示全文
    专题