MySQL流程控制函数怎么使用

58次阅读
没有评论

共计 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 行业资讯频道。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-13发表,共计2405字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)