当前位置:首页 > Mysql教程 > 列表

mysql流程控制语句总结

发布:smiling 来源: PHP粉丝网  添加日期:2014-10-13 12:42:16 浏览: 评论:0 

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

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

1)case,代码如下:

  1. // Below will return zero  
  2. SELECT CASE 0 WHEN 0 THEN 'zero' WHEN 1 THEN 'one' ELSE 'no one' END;  
  3.  
  4. // Below will return true  
  5. SELECT CASE WHEN 5>2 THEN 'true' ELSE 'false' END;   

实例,代码如下:

  1. CASE case_value 
  2.  
  3. WHEN when_value THEN statement_list 
  4.  
  5. [WHEN when_value THEN statement_list] ... 
  6.  
  7. [ELSE statement_list] 
  8.  
  9. END CASE  
  10.  
  11. --或者 
  12.  
  13. CASE  
  14.  
  15. WHEN search_condition THEN statement_list 
  16.  
  17. [WHEN search_condition THEN statement_list] ... 
  18.  
  19. [ELSE statement_list] 
  20.  
  21. END CASE  

2)if 语句,代码如下:

  1. SELECT IF(expr1,expr2,expr3); 
  2.  
  3. // return yes  
  4. SELECT IF(1<5,'yes','no'); 

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

实例,代码如下:

  1. create procedure dbname.proc_getGrade 
  2.  
  3. (stu_no varchar(20),cour_no varchar(10)) 
  4.  
  5. BEGIN  
  6.  
  7. declare stu_grade float
  8.  
  9. select grade into stu_grade from grade where student_no=stu_no and course_no=cour_no; 
  10.  
  11. if stu_grade>=90 then  
  12.  
  13. select stu_grade,'A'
  14.  
  15. elseif stu_grade<90 and stu_grade>=80 then  
  16.  
  17. select stu_grade,'B'
  18.  
  19. elseif stu_grade<80 and stu_grade>=70 then  
  20.  
  21. select stu_grade,'C'
  22.  
  23. elseif stu_grade70 and stu_grade>=60 then  
  24. --phpfensi.com 
  25. select stu_grade,'D'
  26.  
  27. else  
  28.  
  29. select stu_grade,'E'
  30.  
  31. end if; 
  32.  
  33. END  

3)ifnull

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

  1. mysql> select IFNULL(1,0);       
  2.                      -> 1       
  3. mysql> select IFNULL(0,10);       
  4.                      -> 0       
  5. mysql> select IFNULL(1/0,10);       
  6.                      -> 10       
  7. mysql> select IFNULL(1/0,yes);       
  8.                      -> yes 

IF(expr1,expr2,expr3)

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

  1. mysql> select IF(1>2,2,3);       
  2.                      -> 3       
  3. mysql> select IF(1<2,yes,no);       
  4.                      -> yes      
  5. mysql> select IF(strcmp(test,test1),yes,no);       
  6.                      -> no 

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

  1. mysql> select IF(0.1,1,0);       
  2.                      -> 0       
  3. mysql> select IF(0.1<>0,1,0);       
  4.                      -> 1 

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

4)nullif,代码如下:

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

  1. SELECT NULLIF(expr1,expr2);  
  2.  
  3. // Return NULL  
  4. SELECT NULLIF(5,5);  
  5.  
  6. // Return 10  
  7. SELECT NULLIF(10,4); 

5)存储过程的,代码如下:

  1. mysql>create procedure ifprod() 
  2.  
  3. ->begin 
  4.  
  5. ->set @x=0; 
  6.  
  7. ->ins:loop; 
  8.  
  9. ->set @x=@x+1; 
  10.  
  11. if  @x=100 then 
  12.  
  13. leave ins; 
  14.  
  15. end if 
  16.  
  17. insert into actor(firestname)values('www.phpfensi.com'); 
  18.  
  19. end loop ins; 
  20.  
  21. end
  22.  
  23. ->$$ 
  24.  
  25. Query Ok, 0 rows affected (0.00 sec);

Tags: mysql流程语句 mysql控制语句

分享到: