新建:

Create function function_name(参数列表)returns返回值类型

函数体

函数名,应该合法的标识符,并且不应该与已有的关键字冲突。

一个函数应该属于某个数据库,可以使用db_name.funciton_name的形式执行当前函数所属数据库,否则为当前数据库。

参数部分,由参数名和参数类型组成。

返回值类类型

函数体由多条可用的mysql语句,流程控制,变量声明等语句构成。

多条语句应该使用begin end语句块包含。

注意,一定要有return返回值语句。

删除:

Dropfunction if existsfunction_name;

查看:

Show function status like ‘partten’

Show create functionfunction_name;

修改:

Alter functionfunction_name函数选项。

例子:

Hello world!

IF语句

IF search_conditionTHEN

statement_list

[ELSEIF search_conditionTHENstatement_list]

...

[ELSE statement_list]ENDIF;

CASE语句

CASE case_value

WHEN when_valueTHENstatement_list

[WHEN when_value THENstatement_list]

...

[ELSE statement_list]

END CASE;

循环:

While

[begin_label:]WHILEsearch_conditionDO

statement_list

END WHILE [end_label];

如果需要在循环内提前终止 while循环,则需要使用标签;标签需要成对出现。

退出循环

退出整个循环leave 相当于break

退出当前循环iterate 相当于 continue

通过退出的标签决定退出哪个循环。

变量声明:
语法:
DECLARE var_name[,...] type [DEFAULT value]
这个语句被用来声明局部变量。要给变量提供一个默认值,请包含一个DEFAULT子句。值可以被指定为一个表达式,不需要为一个常数。如果没有DEFAULT子句,初始值为NULL。
使用
语序使用 set 和 select into语句为变量赋值。

注意在函数内是可以使用全局变量(用户自定义的变量的)@XXX 全局变量不用声明 可以直接@XXX使用。

例子:获取当前班级内,最大的学号。

参考学生表

create table join_student(

stu_id int not null auto_increment,

stu_no char(10),

class_id int not null,

stu_name varchar(10),

stu_info text,

primary key (stu_id)

);

计算新增学号

drop function if existssno;

delimiter $$ #在包含有语句块时 可以更换语句结束符“;” 为“$$”

create function sno(c_id int)returns char(10)

begin

declare last_no char(10); #声明一个局部变量 用来保存当前最大的学号, 如果没有就为null

declare class_name char(10);

select stu_no from join_student where class_id=c_id order by stu_no desc limit 1 into last_no;

if last_no is null then #如果为空代表当前班级没有学生 从1开始,获得班级名字

return concat ((select c_name from join_class where id=c_id into class_name),'001'); #concat() 函数的作用是连接字符串。

else

return concat(left(last_no,7),lpad(right(last_no,3) + 1, 3, '0'));

end if;

#return @last_no;

end

$$

delimiter ;

随机获得学生名字。

drop function if exists sname;

delimiter $$

create function sname() returns char(2)

begin

declare first_name char(16) default '赵钱孙李周吴郑王冯陈褚卫蒋沈韩杨';

declare last_name char(10) default '甲乙丙丁戊己庚辛壬癸';

declare full_name char(2);

set full_name=concat(substring(first_name,floor(rand()*16+1), 1), substring(last_name,floor(rand()*10+1), 1));

return full_name;

end

$$

delimiter ;

========================================================================================

mysql常用内置函数

数值函数

Abs(X),绝对值abs(-10.9) = 10

Format(X,D),格式化千分位数值format(1234567.456, 2) =1,234,567.46

Ceil(X),向上取整ceil(10.1) = 11

Floor(X),向下取整floor (10.1) = 10

Round(X),四舍五入去整

Mod(M,N) M%N M MOD N 求余 10%3=1

Pi(),获得圆周率

Pow(M,N) M^N

Sqrt(X),算术平方根

Rand(),随机数

TRUNCATE(X,D) 截取D位小数

时间日期函数

Now(),current_timestamp(); 当前日期时间

Current_date();当前日期

current_time();当前时间

Date(‘yyyy-mm-dd HH;ii:ss’);获取日期部分

Time(‘yyyy-mm-dd HH;ii:ss’);获取时间部分

Date_format(‘yyyy-mm-dd HH;ii:ss’,’%D %y %a %d %m %b %j');

Unix_timestamp();获得unix时间戳

From_unixtime();//从时间戳获得时间

字符串函数

LENGTH(string ) //string长度,字节

CHAR_LENGTH(string) //string的字符个数

SUBSTRING(str ,position [,length ]) //从str的position开始,取length个字符

REPLACE(str ,search_str ,replace_str) //在str中用replace_str替换search_str

INSTR(string ,substring ) //返回substring首次在string中出现的位置

CONCAT(string [,... ]) //连接字串

CHARSET(str) //返回字串字符集

LCASE(string ) //转换成小写

LEFT(string ,length ) //从string2中的左边起取length个字符

LOAD_FILE(file_name) //从文件读取内容

LOCATE(substring , string [,start_position ]) //同INSTR,但可指定开始位置

LPAD(string ,length ,pad ) //重复用pad加在string开头,直到字串长度为length

LTRIM(string ) //去除前端空格

REPEAT(string ,count ) //重复count次

RPAD(string ,length ,pad) //在str后用pad补充,直到长度为length

RTRIM(string ) //去除后端空格

STRCMP(string1 ,string2 ) //逐字符比较两字串大小

流程函数:

CASE WHEN [condition]THEN result[WHEN [condition]THEN result ...][ELSE result]END 多分支

IF(expr1,expr2,expr3) 双分支。

聚合函数

Count()

Sum();

Max();

Min();

Avg();

Group_concat()

其他常用函数

Md5();

Default();

老李的菜园 mysql 自定义函数的更多相关文章

  1. mysql 自定义函数

    原文:http://www.cnblogs.com/zhangminghui/p/4113160.html 引言 MySQL本身提供了内置函数,这些函数的存在给我们日常的开发和数据操作带来了很大的便利 ...

  2. mysql自定义函数并在存储过程中调用,生成一千万条数据

    mysql 自定义函数,生成 n 个字符长度的随机字符串 -- sql function delimiter $$ create function rand_str(n int) returns VA ...

  3. MySQL 自定义函数CREATE FUNCTION实例

    分享一个MySQL 自定义函数CREATE FUNCTION的实例.mysql> delimiter $$mysql> CREATE FUNCTION myFunction-> (i ...

  4. MySQL自定义函数(四十六)

    MySQL自定义函数 一.什么是MYSQL自定义函数? mysql当中的自定义函数,我们简称为UDF,它实际上是一种对MySQL扩展的途径,其用法与内置函数相同. 二.自定义函数应该具备哪些条件? 我 ...

  5. MySQL自定义函数

    用户自定义函数(user-defined function,UDF)是一种对MySQL扩展的途径,其用法与内置函数相同. 自定义函数两个必要条件: 参数:可以有另个或多个 返回值:只能有一个 创建自定 ...

  6. MySQL自定义函数用法详解-复合结构自定义变量/流程控制

    自定义函数 (user-defined function UDF)就是用一个象ABS() 或 CONCAT()这样的固有(内建)函数一样作用的新函数去扩展MySQL. 所以UDF是对MySQL功能的一 ...

  7. MySQL自定义函数与存储过程

    1.前置条件 MySQL数据库中存在表user_info,其结构和数据如下: mysql> desc user_info; +-----------+----------+------+---- ...

  8. mysql自定义函数语法

    创建函数 DELIMITER $$DROP FUNCTION IF EXISTS `test` $$CREATE FUNCTION `test`(a int ,b int)RETURNS int BE ...

  9. java mysql自定义函数UDF之调用c函数

    正如sqlite可以定义自定义函数,它是通过API定义c函数的,不像其他,如这里的mysql.sqlite提供原生接口就可以方便的调用其他语言的方法,同样的mysql也支持调用其它语言的方法. goo ...

随机推荐

  1. Hadoop for .NET Developers

    Hadoop for .NET Developers(一):理解Hadoop 这些年来,大数据已经成为分析业界的兴奋源头.对于这个博客系列的目的,我将松散定义这个术语指的重点是从数据核心业务系统里数据 ...

  2. 【Android】各式各样的弹出框与对菜单键、返回键的监听

    Android自带各式各样的弹出框.弹出框也是安卓主要的组件之中的一个.同一时候安卓程序能够对菜单键.返回键的监听.但在安卓4.0之后就禁止对Home键的屏蔽与监听,强制保留为系统守护按键.假设非要对 ...

  3. Android与webserver数据交互编程---3网络爬虫项目实现虚拟浏览器的jsp后台执行

    背景:原先的b/s设计中在一个jsp界面中实现多个复杂的工作流... 为实现移动接口的调用保证工作流的正常webproject特别给提供了该虚拟浏览器的方案 原理:通过该方案实现虚拟浏览器后台运行js ...

  4. selection-内容选中跟光标移动

    如果我们希望手动的改变edittext的光标,我们可以使用 setSelection(int start, int end); setSelection(int index); 这个方法,如果我们选择 ...

  5. .Net写的比较清晰的接口

    尼玛,隔行如隔山. .Net真操蛋. /// <summary> /// 加入群 /// </summary> /// <returns></returns& ...

  6. BZOJ离线版

    http://dh.attack.cf/bzoj/ 闲来无事自己搞的 可以查看权限题 至于这个东西怎么搞, 可以私信我2333 网站已经挂掉. 想看的可以去rxz大爷的blog http://ruan ...

  7. Vue移动端flexible.js+MuseUi

    因为公司有个项目需求,手机端的.之前就写了一个一样的项目,只不过是用原生的写的,心想刚写了个vue后台管理系统,何不也用vue写,所有就没有把之前的利用过来.那么问题来了,要让手机端自适应我们该怎么做 ...

  8. sleep---暂停指定的时间

    sleep命令可以用来将目前动作延迟一段时间. 使用权限:所有使用者. 语法 sleep [--help] [--version] number[smhd] 参数说明: --help : 显示辅助讯息 ...

  9. android:giavity和layout_gravity的差别

    android:gravity: 是对该view中内容的限定.比方一个button 上面的text. 你能够设置该text 相对于view的靠左,靠右等位置. android:layout_gravi ...

  10. 车牌识别--S5PV210測试第二次优化

    优化: 1.RGB转HSV 浮点运算改成定点运算: 2.匹配模板由图片改成C语言数组: 3.优化測试BMP车牌图片读取(两层for循环改为一层for循环). 总体相比优化之前时间降低110ms左右. ...