视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
mysql流程控制语句总结
2020-11-09 09:55:06 责编:小采
文档


以前我们大多数据在用到条件判断时都会有用到if else下面我们要介绍是mysql if else case ifnull等这些命令语句的用法介绍哦。

mysql中有如下的几个的控制流程的语句:
1) case

代码如下
// Below will return zero
SELECT CASE 0 WHEN 0 THEN 'zero' WHEN 1 THEN 'one' ELSE 'no one' END;

// Below will return true
SELECT CASE WHEN 5>2 THEN 'true' ELSE 'false' END;

实例

代码如下

CASE case_value

WHEN when_value THEN statement_list

[WHEN when_value THEN statement_list] ...

[ELSE statement_list]

END CASE

或者

CASE

WHEN search_condition THEN statement_list

[WHEN search_condition THEN statement_list] ...

[ELSE statement_list]

END CASE


2)if 语句

代码如下

SELECT IF(expr1,expr2,expr3);

// return yes
SELECT IF(1<5,'yes','no');

有三个参数,如果第1个表达式返回true,则返回表达式2,否则返回表达式3

实例

代码如下

create procedure dbname.proc_getGrade

(stu_no varchar(20),cour_no varchar(10))

BEGIN

declare stu_grade float;

select grade into stu_grade from 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


3) ifnull

如果expr1不是NULL,IFNULL()返回expr1,否则它返回expr2。IFNULL()返回一个数字或字符串值,取决于它被使用的上下文环境。

代码如下
mysql> select IFNULL(1,0);
-> 1
mysql> select IFNULL(0,10);
-> 0
mysql> select IFNULL(1/0,10);
-> 10
mysql> select IFNULL(1/0,yes);
-> yes


IF(expr1,expr2,expr3)
如果expr1是TRUE(expr1<>0且expr1<>NULL),那么IF()返回expr2,否则它返回expr3。IF()返回一个数字或字符串值,取决于它被使用的上下文。

代码如下
mysql> select IF(1>2,2,3);
-> 3
mysql> select IF(1<2,yes,no);
-> yes
mysql> select IF(strcmp(test,test1),yes,no);
-> no


expr1作为整数值被计算,它意味着如果你正在测试浮点或字符串值,你应该使用一个比较操作来做。

代码如下
mysql> select IF(0.1,1,0);
-> 0
mysql> select IF(0.1<>0,1,0);
-> 1


在上面的第一种情况中,IF(0.1)返回0,因为0.1被变换到整数值, 导致测试IF(0)。这可能不是你期望的。在第二种情况中,比较测试原来的浮点值看它是否是非零,比较的结果被用作一个整数

4)nullif

代码如下
SELECT NULLIF(expr1,expr2);
如果表达式1=表达式2,则返回null,否则返回第1个表达式
SELECT NULLIF(expr1,expr2);

// Return NULL
SELECT NULLIF(5,5);

// Return 10
SELECT NULLIF(10,4);

5)存储过程的

代码如下

mysql>create procedure ifprod()

->begin

->set @x=0;

->ins:loop;

->set @x=@x+1;

if @x=100 then

leave ins;

end if

insert into actor(firestname)values('www.111cn.net');

end loop ins;

end;

->$$

Query Ok, 0 rows affected (0.00 sec);

下载本文
显示全文
专题