函数
函数的概念:
将一段代码封装到一个结构中,在需要执行代码的时候,调用结构代码来执行(代码复用)
函数的分类:
系统函数和自定义函数
系统函数
概念:
系统预先定义好的函数,我们可以直接调用
任何函数都是有返回值的,因此函数的调用是通过select 调用的
Mysql中的字符串的基本操作基本是以字符为单位(最常见的是字符)
Substring:
字符串截取(以字符为单位)
这就说明了mysql中的字符串下标是从1还是,而且字符串的截取是以字符为单位
Char_length :
字符长度
Length :
字节长度
Instr
Lpad:
左填充,将字符串按照某种指定的填充方式,填充到指定长度(字符单位)
Insert
替换数据:找到目标位置指定长度的字符串,替换目标字符串
Strcmp:
字符串比较大小(不区分大小写,主要是校对集,默认校对集不区分大小写)
自定义函数
函数要素:
函数名、参数列表、返回值、函数体
函数的创建:
创建语法:
Create function 函数名(形参列表)retruns 数据类型;
Begin
--函数体
--返回值 : return 类型(指定数据类型);
End
-
自定义函数与系统函数的调用是一样的:select 函数名(实参列表);
查看函数
查看所有函数
Show function status;
我们会发现,函数是属于某个数据库的而不是宏定义的。
查看函数创建语句:
Show create function 函数名;
删除函数
基本语法:drop function 函数名;
函数的参数
分类:
-
定义时的参数叫做形参,要求必须指定数据类型;
-
调用时的参数叫做实参(实参可以是数值也可以是变量);
作用域:
概念:msql中的作用域跟js中的作用域完全一致
全局变量:可以在任何地方使用,局部变量只能在函数的内部使用,用set关键字定义,使用@符号标志
局部变量:定义在函数内部的变量使用declare关键字声明,没有@符号:所有的局部变量声明只能在函数内部进行声明,而且必须在函数体开始之前。
需求:指定数值相加,但是排除5的倍数
值得注意的是:当我们的返回值跟实际定义的返回值不匹配的时候,在编译的阶段是不会报错的,但是在实际的执行阶段的时候就会提示错误