mysql中if语句的使用

参考地址:https://www.php.cn/mysql-tutorials-417851.html

1 IF表达式

  • IF(expr1,expr2,expr3)
    如果expr1是true,则返回expr2,否则返回expr3
select *,if(sva=1,"男","女") as ssva from taname where sva !='';

从thanam表中sva不为空的条件下,sva等于1时返回男,否则返回女。

2 CASE WHEN

select CASE sva WHEN 1 THEN '男‘ ELSE END as ssva 
from thanam where sva !='';

从thanam表中sva不为空的条件下,sva等于1时返回男,否则返回女。

3 IFNULL

  • IFNULL(expr1,expr2)

expr1不为NULL ,则返回值为expr1,否则返回值为expr2。IFNULL返回的是数字或者是字符串,具体情况取决于具体的语境。

4 IF ELSE 做为流程控制语句

IF condition THEN   -- 当condition成立时,执行THEN之后的语句statement,其中ccondition是一个条件表达式
statement 
[ELSEIF  condition THEN] -- 否则判断其他分支,执行其他分支
statement
.....
[ELSE  statement]  END IF; -- 最后以END IF; 结束

例如,建立一个存储过程,该存储过程通过学生学号(student_no)和课程编号(course_no)查询其成绩(grade),返回成绩和成绩的等级,成绩大于90分的为A级,小于90分大于等于80分的为B级,小于80分大于等于70分的为C级,依次到E级。那么,创建存储过程的代码如下:

create procedure dbname.proc getGrade(
stu no varchar(20),
cour_no varchar(10)
) BEGIN declare stu grade float;

select grade into stu_gradefrom grade where student_no=stu_no and_course no=cour_no;

if stu_grade>=90 then
select stu grade,"A'; elseif stu_grade<90 and stu_grade>=80 then
select stu_grade , "B';elseif stu_grade<80 and stu_grade>=70 then
select stu_grade,'C';elseif stu_grade70 and stu_grade>=60 then
select stu_grade,'D';else
select stu_grade,'E';end if;END