MySQL函数
一、内置函数(常用)
1.1 字符串函数
函数名 | 作用 | 写法 | 效果 |
---|---|---|---|
char_length(s) character_length(s) | 返回字符串长度 | select char_length(‘helloworld’); | 10 |
concat(s1,s2,s3) | 合并s1,s2,s3 | select concat (‘hello’,‘world’); | helloworld |
locate(s1,s) | s1在s中的首位置 | select locate(‘l’,‘helloworld’); | 3 |
lcase(s) lower(s) | 转小写 | select lower(‘HELLO’); | hello |
upper(s) | 转大写 | select upper(‘helloworld’) | HELLOWORLD |
trim(s) | 去前后空格 | select trim(’ aa a '); | aa a |
reverse(s) | 倒置 | select reverse(‘hello’); | olleh |
1.2 数字函数
函数名 | 作用 |
---|---|
max(v) | 最大数 |
min(v) | 最小数 |
sum(v) | 求和 |
avg(v) | 平均数 |
count(v) | 累计次数 |
pi() | 圆周率 |
pow(x,y) | x的y次方 |
n/m | n除以m的商 |
n div m | n除以m的商取整数 |
n mod m | 取余 |
round(n) | 四舍五入 |
rand() | 0到1之间的随机数 |
1.3 日期函数
函数名 | 作用 | 写法 | 效果 |
---|---|---|---|
curdate() current_date() | 查日期 | select current_date(); | 2021-03-30 |
curtime() current_time() | 查时间 | select curtime(); | 09:12:57 |
current_timestamp() localtime() | 查日期+时间 | select current_timestamp(); | 2021-03-30 09:14:12 |
year(d) | 取年时间 | select year(‘2021-03-30 09:14:59’); | 2021 |
month(d) | 去月时间 | select month(‘2021-03-30 09:14:59’); | 3 |
day(d) | 取天时间 | select day(‘2021-03-30 09:14:59’); | 30 |
adddate(d,n) | 在d的时间加上n天 | select adddate( ‘2021-03-30 09:14:59’,20); | 2021-04-19 09:14:59 |
addtime(d,n) | 在d的时间上加上n分钟 | select addtime( ‘2021-03-30 09:14:59’,20); | 2021-03-30 09:15:19 |
二、自定义函数
案例1:返回一个INT型数据
CREATE FUNCTION fn()
RETURNS INT
RETURN 10001;
SELECT fn();
案例2:返回一个字符串
CREATE FUNCTION fn2()
RETURNS VARCHAR(10)
RETURN 'helloworld';
SELECT fn2();
案例3:给定两个数,返回两数和
DELIMITER//
CREATE FUNCTION fn3(X INT ,Y INT)
RETURNS INT
BEGIN
DECLARE SUM INT;
SET SUM = X +Y;
RETURN SUM;
END//
DELIMITER;
SELECT fn3(1,2);
案例4:(WHILE 循环)给定一个数,返回1到该数之和
DELIMITER//
CREATE FUNCTION fn4(n INT )
RETURNS INT
BEGIN
DECLARE a INT DEFAULT 0;
DECLARE i INT DEFAULT 1;
WHILE i<n DO
SET a=a+i;
SET i=i+1;
END WHILE;
RETURN a;
END//
DELIMITER;
SELECT fn4(10);
案例5:(IF ELSE)给定一个数,判断属于哪个范围
DELIMITER//
CREATE FUNCTION fn5(n INT )
RETURNS VARCHAR(10)
BEGIN
DECLARE s VARCHAR(10);
IF n >10 THEN
SET s='你输入的数大于10';
ELSEIF n<10 THEN
SET s ='你输入的数小于10';
ELSE
SET s ='你输入的数等于10';
END IF;
RETURN s;
END//
DELIMITER;
SELECT fn5(50);
案例6:(LOOP)输入一个数,返回1到该数之和
DELIMITER//
CREATE FUNCTION fn6(n INT )
RETURNS INT
BEGIN
DECLARE v INT DEFAULT 0;
DECLARE i INT DEFAULT 1;
a1:LOOP
SET v=v+i;
SET i=i+1;
IF i>=n THEN
LEAVE a1;
END IF;
END LOOP;
RETURN v;
END//
DELIMITER;
SELECT fn6(10);
案例7:(REPEAT 循环)输入一个数,返回1到该数阶乘
DELIMITER//
CREATE FUNCTION fn7(n INT )
RETURNS INT
BEGIN
DECLARE v INT DEFAULT 1;
DECLARE j INT DEFAULT 1;
REPEAT
SET v=v*j;
SET j=j+1;
UNTIL j>=n
END REPEAT;
RETURN v;
END//
DELIMITER;
SELECT fn7(10);
删除函数
drop function 函数名
查询数据库函数
SHOW FUNCTION STATUS;