转自:https://www.2cto.com/database/201804/740205.html

MySQL中已经有很多函数,如时间函数等,但是有时这些函数不能满足自己的设计需求,此时需要自定义函数,用户自定义函数(User-defined functuin,UDF)是对MySQL的扩展,其用法和内置函数相同

函数需要具备:参数 返回值

对于函数体中的部分可以是:

1、函数体由合法的SQL语句组成

2、函数体可以是简单的select或者insert语句

3、函数体若为复合结构则使用begin...end语句

4、复合结构可以包含声明、循环、控制结构

1、无参数

知道通过now()函数可以显示日期和时间,如果想把这个时间表达成:“年月日时分秒” 的形式怎么办呢?通过使用格式化函数DATE_FORMAT()

1

mysql>select DATE_FORMAT(NOW(),'%Y年%m月%d日 %H点:%i分:%s秒');

由于该过程书写较为麻烦,如果经常使用很不方便,因此将其“制作”成函数

1

2

mysql>create FUNCTION f1()returns varchar(30)

->RETURN DATE_FORMAT(NOW(),'%Y年:%m月:%d日 %H点:%i分:%s秒');

由于在定义f1()的时候没有参数,因此调用时就可以直接调用

1

mysql>select f1();

2、带有参数

带有一个以上的参数时,这里求解两个数的平均数

1

2

3

mysql>create FUNCTION f2(num1smallint unsigned,num2smallint unsigned)  #函数名

->RETURNS FLOAT(10,2) UNSIGNED       #返回值的类型

->RETURN (num1+num2)/2;              #返回值

3、创建具有复合结构的函数

首先创建一个数据表test

1

2

3

root@localhost test>create table test(id tinyint(3) unsignedprimary key auto_increment,

-> usernamevarchar(30)not null

-> );

现在想往数据表中插入记录,返回值是新插入的记录的id号

1

root@localhost test>insert into testvalues(default,'Lj.K');

由于分号是命令的结束,因此这里需要修改默认的分隔符,否则在输入分号之后无法返回新插入记录的id,因此使用命令

1

DELIMITER 分隔符

这样所有的命令均需要以分隔符来结束

比这将分隔符修改为//,则所有命令均需要以 // 为结束

1

2

3

4

5

6

7

root@localhost test>create FUNCTION adduser(usernamevarchar(20))  #创建添加参数名为username的函数adduser

->RETURNS INT UNSIGNED

->BEGIN

->INSERT test(username)VALUES(username);

->RETURN LAST_INSERT_ID();

->END

-> //

这里因为有两条语句 insert test(username) values(username)和return last_insert_id()两条语句要执行,因此需要使用BEGIN...END语句,从而构成聚合体

1

2

root@localhost test>select  adduser('Rose');

-> //

1

2

root@localhost test>DELIMITER ;

root@localhost test>select  adduser('Tom');

通过drop function命令进行删除

Mysql - 存储过程/自定义函数

在数据库操作中, 尤其是碰到一些复杂一些的系统, 不可避免的, 会用到函数/自定义函数, 或者存储过程. 实际项目中, 自定义函数和存储过程是越少越好, 因为这个东西多了, 也是一个非常难以维护的地方 ...

mysql创建自定义函数与存储过程

mysql创建自定义函数与存储过程 一 创建自定义函数 在使用mysql的过程中,mysql自带的函数可能不能完成我们的业务需求,这时就需要自定义函数,例如笔者在开发过程中遇到下面这个问题 mysql ...

navicat与phpmyadmin做mysql的自定义函数和事件

自定义函数和事件是mysql一个很方便的功能,navicat在5.1以上版本就支持了自定义函数和事件,phpmyadmim不清楚. 用这个是由于一些简单的事情,没有必要去做一个服务器计划使用 接下来我 ...

【MySQL】分页查询实例讲解

MySQL分页查询实例讲解 1. 前言 本文描述了团队在工作中遇到的一个MySQL分页查询问题,顺带讲解相关知识点,为后来者鉴.本文的重点不是"怎样"优化表结构和SQL语句,而是探 ...

MySQL(六) —— 自定义函数

自定义函数 用户自定义函数(user-defined function, UDF)是一种对MySQL扩展的途径,其用法与内置函数相同. 参数,返回值 创建自定义函数 CREATE FUNCTION f ...

MySQL之自定义函数

引言 MySQL本身提供了内置函数,这些函数的存在给我们日常的开发和数据操作带来了很大的便利,比如我前面提到过的聚合函数SUM().AVG()以及日期时间函数等等,可是我们总会出现其他的需求:我们需要 ...

MySQL 创建自定义函数

语法:Create function function_name(参数列表)returns返回值类型 函数体 函数名,应合法的标识符,不应与系统关键字冲突. 一个函数应该属于某个数据库,可以使用db_ ...

mysql增加自定义函数功能

mysql默认是不能自定义函数的 当create function时 This function has none of DETERMINISTIC, NO SQL, or READS SQL DAT ...

MySQL 创建自定义函数(1)

1. 创建测试自定义函数(1) CREATE DEFINER=`dbdh`@`localhost` FUNCTION `test`.`sp_function_dbdh_three`() RETURNS ...

随机推荐

你不一定懂的cpu显示信息

在linux命令中用top查看系统的情况,在cpu这一行有一些分部表示什么 下面有一篇博文,对此写的非常清楚,特转载.猛击下面的链接 http://www.cnblogs.com/yjf512/p/3 ...

Dynatable – 基于 HTML5 & jQuery 的交互表格插件

Dynatable 一款有趣的,语义化,交互式的表格插件,使用 jQuery,HTML5 和 JSON 实现.Dynatable 的目的是提供一种简单的.可扩展的 API,能够轻松的浏览和操作大规模的 ...

rtc关机闹钟6 AlarmManagerService研究

这个是 private void setLocked(int type, long when) { if (mNativeData != 0) {            // The kernel n ...

快的打车 技术部 在 杭州 招聘 #年前面试 年后入职#架构师 - 内推网(neitui.me)

快的打车 技术部 在 杭州 招聘 #年前面试 年后入职#架构师 - 内推网(neitui.me) 陈丹 (cd**@kuaidadi.com) 01-18 发布了内推 #年前面试 年后入职#架构师 • ...

解决tomcat开始出现in production environments was not found on the java.library.path:xxx

如图所看到的,Eclipse中启动tomcat时出现not found on the java.library.path等信息.能够通过下载tomcat-native-1.1.32-win32-bin ...

sqlserver isnull判断

--在新增或编辑的时候设置默认值或加isnull判断 Sql isnull函数 ISNULL(columName, 0)<>35 或 ISNULL(columName, '')

Filter&comma;FilterChain&comma;FilterConfig

实例: package com.zillion.app.filter; import java.io.IOException; import javax.servlet.Filter; import ...

HDFS在web端无法访问文件

解决办法1: [root@djt002 hadoop]# vi /etc/selinux/config 改为 SELINUX=disabled 解决办法2: 查看你的$HADOOP_HOME/etc/ ...

利用gulp解决微信浏览器缓存问题

做了好多项目,这次终于要解决微信浏览器缓存这个令人头疼的问题了.每次上传新的文件,在微信浏览器中访问时,总要先清除微信的缓存,实在麻烦,在网上搜罗了很多解决办法,终于找到了方法:利用gulp解决缓存问 ...

Android-DateTimeAndroidUtil-工具类

DateTimeAndroidUtil-工具类 是关于时间日前相关的公用方法: package liudeli.mynetwork01.utils; import android.util.Log; ...

mysql自定义函数的分号_MySQL之自定义函数实例讲解相关推荐

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

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

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

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

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

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

  4. mysql相隔多长时间_Mysql 计算时间间隔函数

    mysql计算时间差函数 MySql计算两个日期的时间差函数TIMESTAMPDIFF用法,只要用一句SQL语句就可以办到了. MySql计算两个日期的时间差函数TIMESTAMPDIFF用法: 语法 ...

  5. mysql group语句可以排序_MySQL中group_concat()函数的排序方法

    示例一 group_concat()函数的参数是可以直接使用order by排序,下面通过例子来说明,首先看下面的t1表. 比如,我们要查看每个人的多个分数,将该人对应的多个分数显示在一起,分数要从高 ...

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

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

  7. mysql group by 字符串拼接_MySQL之GROUP_CONCAT()函数——将查询到的数据拼接成字符串...

    语法: GROUP_CONCAT([DISTINCT] expr [,expr ...] [ORDER BY {unsigned_integer | col_name | expr} [ASC |DE ...

  8. mysql的聚合函数综合案例_MySQL常用聚合函数详解

    一.AVG AVG(col) 返回指定列的平均值 二.COUNT COUNT(col) 返回指定列中非NULL值的个数 三.MIN/MAX MIN(col):返回指定列的最小值 MAX(col):返回 ...

  9. mysql函数数组参数_MYSQL数组聚合函数,如PostgreSQL array_agg

    我在MYSQL上有两个表,我想知道MYSQL上是否有任何聚合函数作为array_agg()FROM postgreSQL. 表1属性仅有8条记录 表2捕获该属性的记录,因此对于同一属性有时可以是1或n ...

最新文章

  1. The Shortest Statement CodeForces - 1051F LCA+最短路
  2. TensorFlow支持Unicode,中文NLP终于省心了
  3. 解题报告:【kuangbin带你飞】专题四 最短路练习题
  4. 【Android 逆向】Android 进程注入工具开发 ( 编译注入工具 | 编译结果文件说明 | 注入过程说明 )
  5. 数据中心基础设施建设方案
  6. 对抗高并发拯救系统架构,我们并不需要复仇者联盟|深圳活动
  7. bzoj2005: [Noi2010]能量采集
  8. python基础教程zip密码_python基础教程Python实现加密的RAR文件解压的方法(密码已知)...
  9. tomcat如何查找请求资源的?
  10. 被嫌弃的互联网的 “一生”(上)
  11. Android抽屉页面效果
  12. (winform)在一个form里面显示google地图
  13. java.lang.OutOfMemoryError: GC overhead limit exceeded 问题分析和解决(转)
  14. PHP面向对象常见符号总结($this- 、self ::)
  15. 1047: 对数表 C语言
  16. (C语言版)百钱买百鸡问题:公鸡五文钱一只,母鸡三文钱一只,小鸡三只一文钱, 用100文钱买100只鸡,公鸡、母鸡、小鸡各买多少只?
  17. Miscellaneous | 恭喜本人博客进入2万名以内,多谢各位支持!
  18. 案例研究 | 瓜子二手车战略升级三部曲
  19. 金蝶K3开发-委外入库批量核销和反核销
  20. 阿里DataV 2016双十一媒体大屏回顾技术分享

热门文章

  1. [链接].VGA信号时序
  2. 在程序里面(服务器端)调用Winrar压缩文件的方法?另寻求一条语句转换的方法。vb.net到C#。...
  3. 深入理解 nvidia-docker 2.0
  4. Android学习随笔 -- draw9patch的使用
  5. 对字符串数组中的M个字符串按长度由小到大进行排序
  6. 源码共享,希望一起互相学习
  7. 学神python笔记
  8. 数据结构与算法--图的表示与常用算法
  9. java test 用法,pytest基本用法简介
  10. 通过QMP/QGA与虚拟机进行交互