• mysql的判断语句


    if

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

    案例

    1. create procedure p3()
    2. begin
    3. declare score int default 58;
    4. declare result varchar(10);
    5. if score >= 85 then
    6. set result := '优秀';
    7. elseif score >= 60 then
    8. set result := '及格';
    9. else
    10. set result := '不及格';
    11. end if;
    12. select result;
    13. end;
    14. call p3();

    case

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

    方法一

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

    方法二

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

    案例

    1. create procedure p6(in month int)
    2. begin
    3. declare result varchar(16);
    4. case
    5. when month >= 1 and month <= 3 then
    6. set result := '第一季度';
    7. when month >= 4 and month <= 6 then
    8. set result := '第二季度';
    9. when month >= 7 and month <= 9 then
    10. set result := '第三季度';
    11. when month >= 10 and month <= 12 then
    12. set result := '第四季度';
    13. else
    14. set result := '非法参数';
    15. end case ;
    16. select concat('您输入的月份为: ',month, ', 所属的季度为: ',result);
    17. end;
    18. call p6(16);

    while

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

    案例

    1. -- A. 定义局部变量, 记录累加之后的值;
    2. -- B. 每循环一次, 就会对n进行减1 , 如果n减到0, 则退出循环
    3. create procedure p7(in n int)
    4. begin
    5. declare total int default 0;
    6. while n>0 do
    7. set total := total + n;
    8. set n := n - 1;
    9. end while;
    10. select total;
    11. end;
    12. call p7(100);

     repeat

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

    案例

    1. -- A. 定义局部变量, 记录累加之后的值;
    2. -- B. 每循环一次, 就会对n进行-1 , 如果n减到0, 则退出循环
    3. create procedure p8(in n int)
    4. begin
    5. declare total int default 0;
    6. repeat
    7. set total := total + n;
    8. set n := n - 1;
    9. until n <= 0
    10. end repeat;
    11. select total;
    12. end;
    13. call p8(10);
    14. call p8(100);

    loop

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

     案例

    1. -- A. 定义局部变量, 记录累加之后的值;
    2. -- B. 每循环一次, 就会对n进行-1 , 如果n减到0, 则退出循环 ----> leave xx
    3. create procedure p9(in n int)
    4. begin
    5. declare total int default 0;
    6. sum:loop
    7. if n<=0 then
    8. leave sum;
    9. end if;
    10. set total := total + n;
    11. set n := n - 1;
    12. end loop sum;
    13. select total;
    14. end;
    15. call p9(100);

  • 相关阅读:
    【2023集创赛】加速科技杯二等奖作品:基于ATE的电源芯片测试设计与性能分析
    C语言 - 汉诺塔详解(最简单的方法,进来看看就懂)
    PostgreSQL的学习心得和知识总结(八十六)|深入理解PostgreSQL数据库HOOK技术及开源hooks文档介绍
    SpringAOP入门案例
    OpenCV学习笔记(四)——对视频的读取操作
    [附源码]java毕业设计校园超市进销存管理系统
    SpringBoot--通过JSON传递请求参数--方法/实例
    leetcode 剑指offer49:丑数
    Python的格式化输出
    力扣(LeetCode)算法_C++——移位字符串分组
  • 原文地址:https://blog.csdn.net/qq_63431773/article/details/132952319