mysql 存储 if else if
在 MySQL 存储过程或函数中,我们可以使用条件语句来进行逻辑判断和分支控制。常见的条件语句包括 IF 语句、IF…ELSE 语句以及 IF…ELSE IF…ELSE 语句。在这篇文章中,我们将详细介绍在 MySQL 存储过程或函数中如何使用 IF ELSE IF 来实现复杂的逻辑判断和分支控制。
IF 语句
IF 语句用于如果…那么…的简单条件判断。语法如下:
IF condition THEN
statement1;
ELSE
statement2;
END IF;
其中,condition
是待判断的条件,如果 condition
成立,则执行 statement1
,否则执行 statement2
。
下面是一个示例,根据用户的分数来判断等级:
DELIMITER //
CREATE PROCEDURE GetGrade(score INT)
BEGIN
DECLARE grade VARCHAR(10);
IF score >= 90 THEN
SET grade = 'A';
ELSEIF score >= 80 THEN
SET grade = 'B';
ELSEIF score >= 70 THEN
SET grade = 'C';
ELSE
SET grade = 'D';
END IF;
SELECT grade;
END//
DELIMITER ;
CALL GetGrade(85);
运行上面的存储过程,输入分数为 85,会返回等级为 ‘B’。
ELSE IF 语句
IF…ELSE IF…语句用于多个条件判断,形成多个分支。语法如下:
IF condition1 THEN
statement1;
ELSEIF condition2 THEN
statement2;
ELSEIF condition3 THEN
statement3;
...
ELSE
statementN;
END IF;
在 ELSE IF 语句中,如果 condition1
成立,则执行 statement1
;如果 condition1
不成立,但 condition2
成立,则执行 statement2
;以此类推。
下面是一个示例,根据用户输入的数字判断是正数、负数还是零:
DELIMITER //
CREATE PROCEDURE CheckNumber(num INT)
BEGIN
IF num > 0 THEN
SELECT 'Positive';
ELSEIF num < 0 THEN
SELECT 'Negative';
ELSE
SELECT 'Zero';
END IF;
END//
DELIMITER ;
CALL CheckNumber(-5);
运行上面的存储过程,输入数字为 -5,会返回 ‘Negative’。
IF…ELSE IF…ELSE 语句
IF…ELSE IF…ELSE 语句用于多个条件判断,形成更加复杂的逻辑控制。语法如下:
IF condition1 THEN
statement1;
ELSEIF condition2 THEN
statement2;
ELSE
statement3;
END IF;
如果 condition1
成立,则执行 statement1
;如果 condition1
不成立,但 condition2
成立,则执行 statement2
;如果以上条件都不成立,则执行 statement3
。
下面是一个示例,根据用户输入的年份判断是否闰年:
DELIMITER //
CREATE PROCEDURE CheckLeapYear(year INT)
BEGIN
IF (year MOD 4 = 0) AND (year MOD 100 != 0) OR (year MOD 400 = 0) THEN
SELECT 'Leap Year';
ELSE
SELECT 'Not Leap Year';
END IF;
END//
DELIMITER ;
CALL CheckLeapYear(2020);
运行上面的存储过程,输入年份为 2020,会返回 ‘Leap Year’。