Heim  >  Artikel  >  Datenbank  >  mysql流程控制语句总结

mysql流程控制语句总结

WBOY
WBOYOriginal
2016-06-07 17:52:012888Durchsuche

以前我们大多数据在用到条件判断时都会有用到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

   有三个参数,如果第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=80 then 

select stu_grade,'B';

elseif 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(expr10且expr1NULL),那么IF()返回expr2,否则它返回expr3。IF()返回一个数字或字符串值,取决于它被使用的上下文。         

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

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

 代码如下 复制代码
mysql> select IF(0.1,1,0);     
                     -> 0     
mysql> select IF(0.10,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);

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn