共计 2405 个字符,预计需要花费 7 分钟才能阅读完成。
本文丸趣 TV 小编为大家详细介绍“MySQL 流程控制函数怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“MySQL 流程控制函数怎么使用”文章能帮助大家解决疑惑,下面跟着丸趣 TV 小编的思路慢慢深入,一起来学习新知识吧。
在 MySQL 中,流程控制函数是指可以控制存储过程(stored procedure)或函数(function)中执行流程的语句。以下是几个常用的流程控制函数:
1.IF 函数
实现 IF hellip; hellip;ELSE hellip; hellip; 的效果。
# 如果 expr1 为 true,则返回 expr2,否则返回 expr3
IF(expr1,expr2,expr3)
可以看出,IF 函数与三元运算符很像,如:
// 比较最大数
int a=10;
int b=5;
// 比较
int bigNum=a b?a:b;
即,将 IF 函数的三个参数中,expr1 是条件表达式,最终结果是 true 或 false,如果条件成立(true)则返回 expr2,如果条件不成立(false)则返回 expr3。例:
SELECT IF(10 5,10,5) AS bigNum;
2.IFNULL 函数
同样是实现 IF hellip; hellip;ELSE hellip; hellip; 的效果,相当于 IF 函数的变种。
# 如果 expr1 不为 NULL,则返回 expr1,否则返回 expr2
IFNULL(expr1,expr2)
即将原本的条件表达式变形为判断 expr1 是否为 null,不为 null 就是其本身(expr1),为空则是 expr2.
SELECT IFNULL(null, 不空) AS notNull
相当于 IF 函数的
SELECT IF(null IS NULL,null, 不空) AS notNull
判断 expr1 是否为空,为空(true)显示 expr2,不为空(false)显示 expr3
3.CASE 函数
case 函数有两种不同的效果
switch case
相当于 java 中的 switch case 的效果。即 switch 中的变量表达式的值与 case 后面的常量比较。
int week=3;
switch (week){
case 1:
System.out.println( 星期一
break;
case 2:
System.out.println( 星期二
break;
case 3:
System.out.println( 星期三
break;
case 4:
System.out.println( 星期四
break;
case 5:
System.out.println( 星期五
break;
case 6:
System.out.println( 星期六
break;
case 7:
System.out.println( 星期日
break;
default:
System.out.println( 非法数据
break;
}
用 sql 表示:
# NOW() 函数用于获取当前日期和时间,# WEEKDAY(date) 函数, 表示返回 date 对应的工作日索引,# 因为索引从 0 开始,所以加 1;也可以不加 1,将 when 的常量改为工作日索引也可
SELECT CASE WEEKDAY(NOW())+1
WHEN 1 THEN 星期一
WHEN 2 THEN 星期二
WHEN 3 THEN 星期三
WHEN 4 THEN 星期四
WHEN 5 THEN 星期五
WHEN 6 THEN 星期六
WHEN 7 THEN 星期日
ELSE 非法数据
END AS `week`;
函数结构
case 要判断的变量(字段)或表达式
when 常量 1 then 要显示的值 1(或语句 1);
when 常量 2 then 要显示的值 2(或语句 2);
…….
else 要显示的值 n 或语句 n;
end
注意:
与 java 不同,直接写 case 而不是 switch,且没有大括号
when 后面直接加常量值,不用写冒号,用的是 then
then 后面如果是显示的值,不需要加分号;如果 then 后面加的是语句,就需要加分号。
when hellip; hellip;then hellip; hellip; 语句可以有多个。
默认情况用的是 else。
结尾用 end
4. 多重 IF
类似于 java 中的多重 if 判断。
int grade=87;
if (grade =90){
System.out.println( 优秀
}else if (grade =80){
System.out.println( 良好
}else if (grade =70){
System.out.println( 一般
}else if (grade =60){
System.out.println( 及格
}else {
System.out.println( 不及格
}
用 sql 表示:
SELECT id,`name`,chinese,
CASE
WHEN chinese =90 THEN 优秀
WHEN chinese =80 THEN 良好
WHEN chinese =70 THEN 一般
WHEN chinese =60 THEN 及格
ELSE 不及格
END AS `rank`
FROM student
函数结构:
case
when 条件 1 then 要显示的值 1 或语句 1;
when 条件 2 then 要显示的值 2 或语句 2;
……
else 要显示的值 n 或语句 n
end
注意:
case 后面没有加条件
when 后面是条件,结果是 true 或 false;满足条件执行 then,显示后面的值或语句
同样的 then 后面如果是显示的值,不需要加分号;如果 then 后面加的是语句,就需要加分号。
读到这里,这篇“MySQL 流程控制函数怎么使用”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注丸趣 TV 行业资讯频道。