A-A+

MySQL中if case条件语句基本用法

2017年10月16日 PHP技术文章 暂无评论 阅读 0 views 次

在mysql中if case语句的用法非常的多可以用在普通的表达试中同时也可以使用在存储过程中,下面我们来看一些关于if case用法例子.

IF表达式:IF(expr1,expr2,expr3)

如果 expr1 是TRUE (expr1 0 and expr1 NULL),则 IF()的返回值为expr2; 否则返回值则为 expr3,IF() 的返回值为数字值或字符串值,具体情况视其所在语境而定,举例如下:

  1. SELECT IF(score>=60,’pass’,’fail’) FROM score;   
  2.    
  3. mysql> SELECT IF(1>2,2,3);   
  4. -> 3   
  5. mysql> SELECT IF(1<2,'yes ','no');   
  6. -> 'yes'   
  7. mysql> SELECT IF(STRCMP('test','test1'),'no','yes');   
  8. -> 'no'   

如果是大于2种结果,那么就要使用CASE了,语法是:CASE 字段名称 WHEN 值1 THEN 结果1 WHEN 值2 THEN 结果2 ELSE 其他结果 END

举例如下:

  1. SELECT CASE value   
  2. WHEN 1 THEN ‘A’   
  3. WHEN 2 THEN ‘B’   
  4. WHEN 3 THEN ‘C’   
  5. ELSE ‘D’   
  6. END AS text   
  7. FROM test;   

if case存储过程,代码如下:

  1. //错误写法  
  2. create procedure test(in a int)    
  3. if a > 1 then    
  4.   select 1;    
  5. elseif a>2 then    
  6.   select 2;    
  7. else    
  8.    
  9. end if;   
  10.    
  11. //正确定写法   
  12. //开源代码www.xiariboke.net   
  13. create procedure test(in a int)    
  14. if a > 1 then    
  15.   select 1;    
  16. elseif a>2 then    
  17.   select 2;    
  18. else    
  19. -- do nothing --    
  20. set @tmp=1;    
  21. end if;   

例子,代码如下:

  1. DROP PROCEDURE IF EXISTS text;   
  2.    
  3. create procedure text(   
  4. out rtn int    
  5. )   
  6. begin   
  7.    
  8.  declare LoginId INT default 0;   
  9.    
  10.  set rtn=1;    
  11.    
  12.  IF LoginId = 3   
  13.  THEN   
  14.   set rtn=2;   
  15.  ELSEIF LoginId = 0   
  16.  THEN   
  17.   set rtn=3;   
  18.  ELSE   
  19.   set rtn=4;   
  20.  END IF;   
  21.    
  22. end  
标签:

给我留言