mysql 迭代函数_MySQL数据库8(二十四)函数

函数

在MySQL中,函数分为两类:系统函数(内置函数)和自定义函数

不管是内置函数还是用户自定义函数,都是使用select函数名(参数列表)

内置函数

字符串函数

Mysql8 字符串函数

char_length():判断字符串的字符数

length():判断字符串的字节数(与字符集)

concat():连接字符串

instr():判断字符在目标字符串中是否存在,其开始位置从1开始,存在返回其位置,不存在返回0

lcase():全部小写

left():从左侧开始截取到指定位置(位置如果超过长度,截取所有)

ltrim():消除左边对应的空格

mid():从中间位置开始截取,如果不指定截取长度,直接到最后

时间函数

Mysql8 时间函数

now():返回当前时间,日期 时间

curdate():返回当前日期

curtime():返回当前时间

datediff():判断两个日期之间的天数差距,参数日期必须使用字符串格式(引号包裹)

date_add(日期,interval 时间数字 type):进行时间的增加

type:day/hour/minute/second

unix_timestamp():获取时间戳

from_unixtime():将制定时间戳转换成对应的日期时间格式

987a4d810de4015d4d91faf3a0e6d68d.png

数学函数

abs():绝对值

ceiling():向上取整

floor():向下取整

pow():求指数

rand():获取一个随机数(0-1)之间

round():四舍五入函数

其他函数

md5():对数据进行md5加密(mysql中的md5与其他任何地方的md5加密出来的内容是完全相同的)

version():获取版本号

database():显示当前所在的数据库

uuid():生成一个唯一标识符(自增长),自增长是单表唯一,UUID是整库(数据唯一同时空间唯一)

1f76c4e47a6c1b1cf827a169d62beef0.png

自定义函数

自定义函数:用户自己定义的函数

函数:实现某种功能的语句块(由多条语句组成)

1、函数内部的每一条指令都是一个独立的个体:需要符合语句定义规范,需要语句结束符分号。

2、函数时一个整体,而且函数是在调用的时候才会被执行,那么当设计函数的时候,意味着整体不能中断。

3、mysql一旦见到语句结束符分号,就会自动开始执行

解决方案:在定义函数之前,尝试修改临时的语句结束符

基本语法:delimiter

修改临时语句结束符:delimiter 新符号;

中间为正常SQL指令:使用分号结束(系统不会执行,不认识分号)

使用新符号结束

修改回语句结束符:delimiter ;

创建函数

自定义函数包含几个要素:function关键字,函数名,参数(形参和实参[可选]),确认函数返回值类型,函数体,返回值

函数定义基本语法:

修改语句结束符

create function 函数名(形参) returns 返回值类型

begin

//函数体

return 返回值数据; //数据必须与结构中定义的返回值类型一致

end

语句结束符

修改语句结束符(改回来)

报:ERROR 1418(HY000)

0bda67f5bf53dcdd3fd4f4afa32ddd6a.png

9e5c35fef0bf09f61d7b677a1f0f6626.png

0a9adc1ce3fe552debf477c075fa65fd.png

并不是所有的函数都需要begin和end:如果函数体本身只有一条指令(return),那么可以省略begin和end。

5670a5f949590cf300e65ad1cbc5c21c.png

形参:在mysql中需要为函数的形参指定数据类型(形参本身可以有多个)

基本语法:变量名 字段类型

5fcc8a72b762a6c06a6e312b56d123dd.png

查看函数

1、可以通过查看function状态,查看所有的函数

show function status [like ‘pattern’];

c3c2bfbdfd7a1d459eef65eb587144af.png

2、可以查看这个 函数的创建语句

show create function 函数名;

257ba7c93b202b342193aca04f669a4f.png

调用函数

自定义函数的调用和内置函数的调用是一样的:select 函数名(实参列表);

f597f51beeccd4f8cddf616fcf1b22d8.png

修改函数

alter function,其他与创建函数一致

删除函数

删除自函数:drop function 函数名;

a6658ae62ab69d5599d92c0e12ad078c.png

注意事项

1、自定义函数是属于用户级别的,只有当前客户端对应的数据库中可以使用

2、可以在不同的数据库下看到对应的函数,但是不可以调用

3、自定义函数:通常是为了将多行代码集合到一起解决一个重复性问题

4、函数因为必须规范返回值,那么在函数内部不能使用select指令,select一旦执行就会得到一个结果(result set):select 字段 into @变量;(唯一可用)

流程结构案例

需求:从1开始,知道用户传入的对应的值为止,自动求和,凡是5的倍数都不要。

设计:

1、创建函数

2、需要一个形参,确定要累加到什么为止

3、在函数体内部需要定义一个变量保存对应的结果 set @变量名

使用局部变量来操作:此结果是在函数内部使用

declare 变量名 类型 [=默认值]

4、内部需要一个循环来实现迭代累加

5、循环内部需要进行条件判断控制:5的倍数

6、函数必须有返回值

--创建一个自动求和的函数

--修改语句结束符

delimiter $$--创建函数

create function my_sum(end_value int) returns int

begin

--声明变量(局部变量):如果使用declare 声明变量,必须在函数体其他语句之前

declare res int default 0;declare i int default 1;--循环处理

mywhile:while i <=end_value do--判断当前数据是否合理

if i % 5 = 0 then

--5的倍数不要

set i = i + 1;

iterate mywhile;end if;--修改变量 累加结果

set res = res + i; --mysql中没有++

set i = i + 1;end whilemywhile;--返回值

returnres;end

--结束

$$--修改语句结束符

delimiter ;

调用函数:select 函数名(实参);

8c322bb1c56b67aad3631353f0ece3eb.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值