当前位置: 首页 > news >正文

mysql的判断语句

if

if 用于做条件判断,具体的语法结构如下,在 if 条件判断的结构中, ELSE IF 结构可以有多个,也可以没有。 ELSE 结构可以有,也可以没有。
IF 条件1 THEN
.....
ELSEIF 条件2 THEN -- 可选
.....
ELSE -- 可选
.....
END IF;

案例

create procedure p3()
begin
declare score int default 58;
declare result varchar(10);
if score >= 85 thenset result := '优秀';
elseif score >= 60 thenset result := '及格';
elseset result := '不及格';
end if;
select result;
end;
call p3();

case

如果判定条件有多个,多个条件之间,可以使用 and or 进行连接。

方法一

-- 含义: 当case_value的值为 when_value1时,执行statement_list1,当值为 when_value2时,
执行statement_list2, 否则就执行 statement_list
CASE case_value
WHEN when_value1 THEN statement_list1
[ WHEN when_value2 THEN statement_list2] ...
[ ELSE statement_list ]
END CASE;

方法二

-- 含义: 当条件search_condition1成立时,执行statement_list1,当条件search_condition2成
立时,执行statement_list2, 否则就执行 statement_list
CASE
WHEN search_condition1 THEN statement_list1
[WHEN search_condition2 THEN statement_list2] ...
[ELSE statement_list]
END CASE;

案例

create procedure p6(in month int)
begin
declare result varchar(16);
casewhen month >= 1 and month <= 3 thenset result := '第一季度';when month >= 4 and month <= 6 thenset result := '第二季度';when month >= 7 and month <= 9 thenset result := '第三季度';when month >= 10 and month <= 12 thenset result := '第四季度';elseset result := '非法参数';end case ;select concat('您输入的月份为: ',month, ', 所属的季度为: ',result);
end;
call p6(16);

while

while 循环是有条件的循环控制语句。满足条件后,再执行循环体中的 SQL 语句。
-- 先判定条件,如果条件为true,则执行逻辑,否则,不执行逻辑
WHILE 条件 DOSQL逻辑...
END WHILE;

案例

-- A. 定义局部变量, 记录累加之后的值;
-- B. 每循环一次, 就会对n进行减1 , 如果n减到0, 则退出循环
create procedure p7(in n int)begindeclare total int default 0;while n>0 doset total := total + n;set n := n - 1;end while;select total;end;
call p7(100);

 repeat

repeat 是有条件的循环控制语句 , 当满足 until 声明的条件的时候,则退出循环
-- 先执行一次逻辑,然后判定UNTIL条件是否满足,如果满足,则退出。如果不满足,则继续下一次循环
REPEATSQL逻辑...UNTIL 条件
END REPEAT;

案例

-- A. 定义局部变量, 记录累加之后的值;
-- B. 每循环一次, 就会对n进行-1 , 如果n减到0, 则退出循环
create procedure p8(in n int)begindeclare total int default 0;repeatset total := total + n;set n := n - 1;until n <= 0end repeat;select total;end;
call p8(10);
call p8(100);

loop

LOOP 实现简单的循环,如果不在 SQL 逻辑中增加退出循环的条件,可以用其来实现简单的死循环。LOOP可以配合一下两个语句使用:
  • LEAVE :配合循环使用,退出循环。
  • ITERATE:必须用在循环中,作用是跳过当前循环剩下的语句,直接进入下一次循环。
[begin_label:] LOOPSQL逻辑...
END LOOP [end_label];LEAVE label; -- 退出指定标记的循环体
ITERATE label; -- 直接进入下一次循环

 案例

-- A. 定义局部变量, 记录累加之后的值;
-- B. 每循环一次, 就会对n进行-1 , 如果n减到0, 则退出循环 ----> leave xx
create procedure p9(in n int)begindeclare total int default 0;sum:loopif n<=0 thenleave sum;end if;set total := total + n;set n := n - 1;end loop sum;select total;end;
call p9(100);

http://www.lryc.cn/news/169035.html

相关文章:

  • ArcGIS Maps SDK for JavaScript系列之四:添加自定义底图
  • Learn Prompt-角色扮演
  • 《动手学深度学习 Pytorch版》 6.1 从全连接层到卷积
  • 六、数学建模之插值与拟合
  • 【项目经验】:elementui表格中数字汉字排序问题及字符串方法localeCompare()
  • Spring Boot的运行原理
  • xen-gic初始化流程
  • Docker从认识到实践再到底层原理(六-1)|Docker容器基本介绍+命令详解
  • 【Flink】FlinkCDC自定义反序列化器
  • linux基础(2)
  • docker安装zookeeper(单机版)
  • 国际版阿里云/腾讯云免开户:云存储服务:云存储服务能够让你随时随地拜访和同享文件
  • 【Java】应用层协议HTTP和HTTPS
  • SpringBoot整合Flowable
  • 华为云香港S3云服务器性能测评_99元一年租用价格
  • prompt 视频收集
  • Rust :与C交互
  • 模拟实现C语言--memcpy函数和memmove函数
  • Linux目录
  • 全国职业技能大赛云计算--高职组赛题卷①(私有云)
  • STM32--PWR电源控制
  • vue+element-ui el-descriptions 详情渲染组件二次封装(Vue项目)
  • Nvme 协议第一章节学习
  • 三维模型3DTile格式轻量化压缩处理工具常用几款软件介绍
  • 【工具篇】高级 TypeScript 案例
  • 利用Python将dataframe格式的所有列的数据类型转换为分类数据类型
  • 安全线程的集合
  • 用GoConvey编写单元测试的一些总结
  • Linux Arm64修改页表项属性
  • elasticsearch14-高亮