MySQL中的if和case语句使用总结
Mysql的if既可以作为表达式用,也可在存储过程中作为流程控制语句使用,如下是做为表达式使用:
IF表达式
IF(expr1,expr2,expr3)
如果expr1是TRUE(expr1<>0andexpr1<>NULL),则IF()的返回值为expr2;否则返回值则为expr3。IF()的返回值为数字值或字符串值,具体情况视其所在语境而定。
select*,if(sva=1,"男","女")asssvafromtanamewheresva!=""
作为表达式的if也可以用CASEwhen来实现:
selectCASEsvaWHEN1THEN'男'ELSE'女'ENDasssvafromtanamewheresva!=''
在第一个方案的返回结果中,value=compare-value。而第二个方案的返回结果是第一种情况的真实结果。如果没有匹配的结果值,则返回结果为ELSE后的结果,如果没有ELSE部分,则返回值为NULL。
例如:
SELECTCASE1WHEN1THEN'one' WHEN2THEN'two' ELSE'more'END astestCol
将输出one
IFNULL(expr1,expr2)
假如expr1不为NULL,则IFNULL()的返回值为expr1;否则其返回值为expr2。IFNULL()的返回值是数字或是字符串,具体情况取决于其所使用的语境。
mysql>SELECTIFNULL(1,0); ->1
mysql>SELECTIFNULL(NULL,10); ->10
mysql>SELECTIFNULL(1/0,10); ->10
mysql>SELECTIFNULL(1/0,'yes'); ->'yes'