前言:下面是一些使用存储过程和函数的练手小题目
🙏废话不多说系列,直接开整🙏
一、累计求和:输入n,求1+2+3+…+n的和
1、使用函数
(1)源码
# 如果存在函数 sumNum ,则删除
drop function if exists sumNum;
create function sumNum(`num` int) returns int
begin
# 存储函数:累计求和(例如:输入参数为 3,则返回6 [1+2+3=6])
declare sum int;
declare i int;
set sum = 0;
set i = 1;
while i <= num DO
set sum = sum + i;
set i = i + 1;
end while;
return sum;
end
# 演示示例
select sumNum(3);
(2)测试
2、使用存储过程
(1)源码
# 如果存在存储过程 proc_sumNum(), 则删除
drop procedure if exists proc_sumNum;
create procedure proc_sumNum(in num int)
begin
# 声明变量,要紧跟begin之后
declare sum int;
declare i int;
# 赋值用 set
set i = 1;
set sum = 0;
while i <= num do
set sum = sum + i;
set i = i + 1;
end while;
# 显示sum
select sum;
end
# 使用示例
call proc_sumNum(3);
二、猜数字,输入一个数字,看看是否和随机的一致
1、使用函数
(1)源码
-- 如果存在此函数,则删除
drop function if exists isAim;
create function isAim(`num` int) returns varchar(1000)
begin
declare s varchar(1000);
declare aim int;
set aim = floor(rand() * 6 + 7); # 随机生成的7~12以内包含7,12的数字
set s = '';
if num < aim then set s = 'less';
elseif num > aim then set s = 'more';
else set s = 'Successfull!,You are Greatful!';
end if;
return s;
end
-- 使用示例
select isAim(8);
(2)测试
三、拼接函数-使用
(1)group_concat()
核心语法格式:group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符']) ;
-- 用法1[组拼接]:
-- 当 group_concat(字段列1) 配合 group by 字段2 使用时,根据 字段2 分类去统计拼接;
-- 当 group_concat(字段列1) 单独使用在 select 语句中时,将字段列1 所有的值 拼接;
select group_concat(user_id) from user; -- 得到所有ID用“,”拼接的字符串;
select group_concat(user_id) from user group by user_gender; -- 根据性别分类得到ID用“,”拼接的字符串;
-- 用法2[拼接符]:默认使用“,”拼接,可自定义拼接字符"-"
select group_concat(user_id separator '-') from user;
-- 用法3[升降序]:拼接字符串时进行排序,默认按照时间升序拼接
select group_concat(user_id order by create_time desc) from user;
-- 用法4[去重复]:拼接的字符串时去重需拼接的字段值
select group_concat(distinct user_name) from user;
-- 综合,上述用法举例
select group_concat(distinct user_id order by create_time desc separator '-') from user;
(2)concat() 函数
- 功能:将多个字符串连接成一个字符串。
- 语法:concat(str1, str2,...)
- 返回:返回结果为连接参数产生的字符串,如果有任何一个参数为null,则返回值为null。
select concat('-', 2, '-'), concat(1,null,2);
(3)concat_ws() 函数
- 功能:和concat()一样,将多个字符串连接成一个字符串,但是可以一次性指定分隔符~(concat_ws就是concat with separator)
- 语法:concat_ws(separator, str1, str2, ...)
- 说明:第一个参数指定分隔符。需要注意的是分隔符不能为null,如果为null,则返回结果为null。
select concat_ws('*', 1,null,3), concat_ws('-', 1,2,3);
🙏至此,非常感谢阅读🙏