共計 2430 個字符,預計需要花費 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 行業資訊頻道。
向 AI 問一下細節丸趣 TV 網 – 提供最優質的資源集合!