mysql 自定义函数
-
新建:
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();
转载于:https://www.cnblogs.com/ljcphper/p/4387645.html
mysql 自定义函数相关推荐
- mysql自定义函数应用_mysql functions实例:在自定义函数中应用字符串函数
分享一段mysql自定义函数的代码,在其中用到了mysql的字符串函数length. 代码: mysql> delimiter $$ mysql> CREATE FUNCTION myFu ...
- 数据库系列之mysql 自定义函数function,函数和存储过程的区别
mysql 自定义函数function,函数和存储过程的区别 https://blog.csdn.net/u010365819/article/details/80470448 https://blo ...
- mysql 自定义函数function,函数和存储过程的区别
From: https://blog.csdn.net/u010365819/article/details/80470448 1.MySQL自定义函数简介 在MySQL中使用自定义函数也需要相应的要 ...
- mysql 自定义函数教程_MySQL自定义函数
MySQL自定义函数 函数与存储过程类似,也是一组预先编译好的SQL语句的集合,但是存储过程可以有0个或多个返回,函数就只能有一个返回 创建函数 #语法 参数列表包含两部分 参数名和参数类型 #函数体 ...
- MySQL自定义函数(四十六)
MySQL自定义函数 一.什么是MYSQL自定义函数? mysql当中的自定义函数,我们简称为UDF,它实际上是一种对MySQL扩展的途径,其用法与内置函数相同. 二.自定义函数应该具备哪些条件? 我 ...
- mysql 自定义函数教程_Mysql 自定义函数
Mysql 自定义函数怎么用 CREATE FUNCTION `strip_tags`($str text) RETURNS text BEGIN DECLARE $start, $end INT D ...
- MySQL自定义函数创建与使用总结
MySQL自定义函数创建与使用总结 MySQL自定义函数和存储过程类似,也需要在数据库中创建并保存.它与存储过程一样,都是由SQL语句和控制语句组成的代码片段,可以被应用程序和其他SQL语句调用. M ...
- mysql自定义函数示例代码,以及属性介绍
以下是一个MySQL自定义函数的示例代码,该函数实现了将指定字符串中的大写字母转换为小写字母的功能: DELIMITER $$ CREATE FUNCTION to_lower(str VARCHAR ...
- MySQL自定义函数的使用及MySQL中的流程控制语句
MySQL自定义函数 文章目录 MySQL自定义函数 创建自定义函数 自定义函数的调用 自定义函数的删除 自定义函数的维护 流程控制语句 条件控制语句 循环语句 创建自定义函数 创建自定义函数时, 开 ...
- mysql自定义函数实现
mysql自定义函数实现 环境准备 查看mysql版本 select version(); 查看mysql存储引擎 show variables like '%storage_engine%'; 创建 ...
最新文章
- MySQL手机统计信息_MySQL统计信息
- hdu oj1096题解
- 牛客网(剑指offer) 第十六题 合并两个排序的链表
- 部署在SAP云平台上的应用, 该如何解决跨域问题Cross Domain
- ocp 042 第六章:管理用户安全性
- hadoop windows
- 纠偏的意思_承压能力和纠偏能力,决定成长的高度
- 利用python随机生成姓名的实例教程
- springboot学习过程中遇到的错误集
- 关于SpringBoot和Thymeleaf模板中遇到的问题
- 【优化算法】麻雀搜索优化算法(SSA)【含Matlab源码 1288期】
- [电动智能汽车-7]:汽车CAN总线详解
- 微信上老师发的试卷怎样打印?
- word 目录 有一部分无无虚线,解决办法
- 利用全加器实现7段数码管_[走近FPGA]之数码管动态显示
- 阿里云-学生成长计划领取资格考试 - 云计算及云服务器入门!超详细多题答案!白嫖阿里云服务器!
- Ubuntu系统如何屏幕截图
- RT-Thread柿饼控件(2)-- Button
- 淘宝,天猫获取sku详细信息 API
- MC.9,库存分析,LIS之乱谈一气
热门文章
- 《荣耀战魂》的环境设计制作经验
- 买了台任天堂Switch
- pmp每日三题(2022年3月14日)
- EF Core 生成数据库
- 27_多线程_第27天(线程安全、线程同步、等待唤醒机制、单例设计模式)_讲义...
- 【Luogu】P4462异或序列(莫队)
- 结合提供者模式解析Jenkins源码国际化的实现
- bzoj 4515: [Sdoi2016]游戏
- JDBC对MySQL数据库存储过程的调用
- 在八十年代末,比尔·盖茨和史蒂夫·巴尔默