MySQL逻辑条件判断相关语句、函数使用举例介绍
1、 IFNULL函数介绍
IFNULL(expr1, expr2)
说明:假如expr1不为NULL,则IFNULL()的返回值为expr1;否则其返回值为expr2。IFNULL()的返回值是数字或是字符串,具体情况取决于其所使用的语境。
注意:默认结果值为两个表达式中更加“通用”的一个,顺序为STRING、REAL或INTEGER。
例子:
SELECT IFNULL(1, 0); #结果为1
SELECT IFNULL(NULL, 10); #结果为10
SELECT IFNULL(1/0, 10); #结果为10.000
SELECT IFNULL('string', 1.5); #结果为string
SELECT IFNULL('string', 5); #结果为string
SELECT IFNULL(1.5, 5); #结果为1.5
2、 IF函数
IF(expr1, expr2, expr3)
如果expr1是TRUE(expr1<>0且expr1<>NULL),那么IF()返回expr2,否则它返回expr3。
例子:
SELECT IF(1>2, 2, 3); #结果返回3
SELECT IF(1<2, 'yes', 'no'); #结果返回yes
SELECT IF(NULL, 1, 3); #结果返回3
SELECT IF(0.1,1,0);#结果返回1
SELECT IF(0.1<>0,1,0); #结果返回1
注意:IF(0.1)返回0,因为0.1被变换到整数值,导致测试IF(0)
3、 CASE WHEH的使用
CASE WHEN [condition] THEN result [WHEN [condition] THEN result ...] [ELSE result] END
说明:condition条件为真,则返回result。如果没有匹配的result值,那么结果在ELSE后的result被返回。如果没有ELSE部分,那么NULL被返回。
例子:
SELECT CASE WHEN 1>0 THEN "true" ELSE "false" END; #结果返回true
SELECT CASE WHEN 5 > 9 THEN "5 > 9:fasle" WHEN 5 > 6 THEN "5 > 6:fasle" WHEN 5 > 4 THEN "5 > 4:true" ELSE "false" END; #结果返回5 > 4:true
4、 IF…ELSE的使用
DELIMITER //
CREATE PROCEDURE sp_test(
flag INT
)
BEGIN
DECLARE num INT DEFAULT 0;
SET num = 1;
IF flag = 3
THEN
SET num = 2;
SELECT num;
ELSE
SET num = 3;
SELECT num;
END IF;
END;
//
DELIMITER ;
CALL sp_test(5); #结果输出值:3
类似的有IF…ENDIF;
5、 IF…ELSEIF…ELSE的使用
DELIMITER //
CREATE PROCEDURE sp_test(
flag INT
)
BEGIN
DECLARE num INT DEFAULT 0;
SET num = 1;
IF flag = 3
THEN
SET num = 2;
SELECT num;
ELSEIF flag = 0
THEN
SET num = 3;
SELECT num;
ELSE
SET num = 4;
SELECT num;
END IF;
END;
//
DELIMITER ;
注:前后记得用DELIMITER //……// DELIMITER;不然直接运行以上创建存储过程的语句可能会报错,如下:
Query: SET num = 1
Error Code: 1193
Unknown system variable 'num'