以前我们大多数据在用到条件判断时都会有用到if else下面我们要介绍是mysql if else case ifnull等这些命令语句的用法介绍.
mysql中有如下的几个的控制流程的语句:
1)case,代码如下:
- //Belowwillreturnzero
- SELECTCASE0WHEN0THEN'zero'WHEN1THEN'one'ELSE'noone'END;
- //Belowwillreturntrue
- SELECTCASEWHEN5>2THEN'true'ELSE'false'END;
实例,代码如下:
- CASEcase_value
- WHENwhen_valueTHENstatement_list
- [WHENwhen_valueTHENstatement_list]...
- [ELSEstatement_list]
- ENDCASE
- --或者
- CASE
- WHENsearch_conditionTHENstatement_list
- [WHENsearch_conditionTHENstatement_list]...
- [ELSEstatement_list]
- ENDCASE
2)if 语句,代码如下:
- SELECTIF(expr1,expr2,expr3);
- //returnyes
- SELECTIF(1<5,'yes','no');
有三个参数,如果第1个表达式返回true,则返回表达式2,否则返回表达式3.
实例,代码如下:
- createproceduredbname.proc_getGrade
- (stu_novarchar(20),cour_novarchar(10))
- BEGIN
- declarestu_gradefloat;
- selectgradeintostu_gradefromgradewherestudent_no=stu_noandcourse_no=cour_no;
- ifstu_grade>=90then
- selectstu_grade,'A';
- elseifstu_grade<90andstu_grade>=80then
- selectstu_grade,'B';
- elseifstu_grade<80andstu_grade>=70then
- selectstu_grade,'C';
- elseifstu_grade70andstu_grade>=60then
- --phpfensi.com
- selectstu_grade,'D';
- else
- selectstu_grade,'E';
- endif;
- END
3)ifnull
如果expr1不是NULL,IFNULL()返回expr1,否则它返回expr2,IFNULL()返回一个数字或字符串值,取决于它被使用的上下文环境,代码如下:
- mysql>selectIFNULL(1,0);
- ->1
- mysql>selectIFNULL(0,10);
- ->0
- mysql>selectIFNULL(1/0,10);
- ->10
- mysql>selectIFNULL(1/0,yes);
- ->yes
IF(expr1,expr2,expr3)
如果expr1是TRUE(expr1<>0且expr1<>NULL),那么IF()返回expr2,否则它返回expr3,IF()返回一个数字或字符串值,取决于它被使用的上下文,代码如下:
- mysql>selectIF(1>2,2,3);
- ->3
- mysql>selectIF(1<2,yes,no);
- ->yes
- mysql>selectIF(strcmp(test,test1),yes,no);
- ->no
expr1作为整数值被计算,它意味着如果你正在测试浮点或字符串值,你应该使用一个比较操作来做,代码如下:
- mysql>selectIF(0.1,1,0);
- ->0
- mysql>selectIF(0.1<>0,1,0);
- ->1
在上面的第一种情况中,IF(0.1)返回0,因为0.1被变换到整数值,导致测试IF(0),这可能不是你期望的,在第二种情况中,比较测试原来的浮点值看它是否是非零,比较的结果被用作一个整数.
4)nullif,代码如下:
SELECT NULLIF(expr1,expr2);如果表达式1=表达式2,则返回null,否则返回第1个表达式,代码如下:
- SELECTNULLIF(expr1,expr2);
- //ReturnNULL
- SELECTNULLIF(5,5);
- //Return10
- SELECTNULLIF(10,4);
5)存储过程的,代码如下:
- mysql>createprocedureifprod()
- ->begin
- ->set@x=0;
- ->ins:loop;
- ->set@x=@x+1;
- if@x=100then
- leaveins;
- endif
- insertintoactor(firestname)values('www.phpfensi.com');
- endloopins;
- end;
- ->$$
- QueryOk,0rowsaffected(0.00sec);