MySQL?流程控制函數(shù)示例詳解
MySQL提供了多種流程控制函數(shù),允許用戶根據(jù)條件來改變 SQL語句的執(zhí)行邏輯。這些函數(shù)在數(shù)據(jù)查詢、更新和存儲過程中都非常有用,在本文您將能學習到如下函數(shù):
IF(expr, v1, v2)IFNULL(v1, v2)NULLIF(expr1, expr2)- 簡單
CASE語句 - 搜索
CASE語句
一、條件選擇函數(shù)
這類函數(shù)通常用于簡單的“如果…則…”邏輯。
1.1 IF(expr, v1, v2)
這是最直接的流程控制函數(shù),類似于三元運算符。
語法:IF(condition, true, false)
功能: 如果條件表達式 condition 為真(非零、非NULL),則返回 true,否則返回false。
示例:
其表結構如下

-- 如果分數(shù)大于等于60,返回‘及格',否則返回‘不及格' SELECT name, score, IF(score >= 60, '及格', '不及格') AS result FROM student; -- 處理NULL值 SELECT name, class,IF(class IS NULL, '沒有班級', '有班級') AS "班級" FROM student;
其結果如下:(我們要重點關注一下第二個結果,IF函數(shù)檢測的第一個參數(shù)是非零、非NULL的為真,所以如果是空則也會將其判斷為真)


1.2 IFNULL(v1, v2)
專門用于檢查值是否為NULL。
語法: IFNULL(VALUE1,VALUE2)
功能: 如果VALUE1的值不為空(特指NULL),則返回VALUE1,否則返回VALUE2。
示例:
其表結構如下

-- 如果郵箱為NULL,顯示‘N/A' SELECT name, class,IFNULL(class,"沒有班級") AS "班級" FROM student;
其結果為

1.3 NULLIF(expr1, expr2)
用于比較兩個表達式。如果它們相等,則返回 NULL,否則返回第一個表達式。
語法: NULLIF(expression1, expression2)
功能: 如果 expression1 等于 expression2,則返回 NULL,否則返回 expression1。這在避免除零錯誤等場景中非常有用。
示例:
其表結構如下

-- 查詢變動年紀 SELECT name, class,new_class,NULLIF(class,new_class) AS "變動年級" FROM student; -- 避免除零錯誤 SELECT name, class,score,100/NULLIF(score,0) AS "簡單除法" FROM student;
其結果如下


二、Case 語句
CASE 語句提供了比IF() 函數(shù)更強大、更靈活的多分支條件判斷能力。它有兩種形式:簡單 CASE 和 搜索 CASE。
2.1 簡單 CASE 語句
將某個表達式與一系列簡單的值進行比較。
語法:
CASE expression
WHEN value1 THEN result1
WHEN value2 THEN result2
...
[ELSE else_result]
END功能: 將 expression 的值依次與每個 WHEN 子句中的 value 進行比較。如果匹配,則返回對應的 result。如果都不匹配,則返回 ELSE 部分的結果;如果沒有 ELSE 且無匹配項,則返回 NULL。
示例:
其表結構如下

SELECT
`name`,
score,
CASE score
WHEN 'A' THEN "優(yōu)秀"
WHEN 'B' THEN "良好"
WHEN 'C' THEN "及格"
WHEN 'D' THEN "不及格"
ELSE "沒考試"
END AS "成績"
FROM student;其結果如下

2.2 搜索 CASE 語句
允許在 WHEN 子句中使用更復雜的條件表達式,而不僅僅是等值比較。
示例:
其表結構如下

SELECT
`name`,
score,
CASE
WHEN score < 60 THEN "不及格"
WHEN score >= 60 AND score < 70 THEN "及格"
WHEN score >= 70 AND score < 80 THEN "良好"
WHEN score >= 80 THEN "優(yōu)秀"
ELSE "沒考試"
END AS grade_level
FROM student;其結果如下

到此這篇關于MySQL 流程控制函數(shù)的文章就介紹到這了,更多相關mysql流程控制函數(shù)內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
MySQL5.7中 performance和sys schema中的監(jiān)控參數(shù)解釋(推薦)
在MySQL5.7中,performance schema有很大改進,包括引入大量新加入的監(jiān)控項、降低占用空間和負載,以及通過新的sys schema機制顯著提升易用性。下面通過本文給大家介紹 MySQL5.7中 performance和sys schema中的監(jiān)控參數(shù)解釋,需要的朋友可以參考下2017-08-08
mysql8.0.11數(shù)據(jù)目錄遷移的實現(xiàn)
這篇文章主要介紹了mysql8.0.11數(shù)據(jù)目錄遷移的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-02-02
64位Win10系統(tǒng)安裝Mysql5.7.11的方法(案例詳解)
小編在安裝64位Win10系統(tǒng)的mac book筆記本上用mysql-installer-community-5.7.11.0安裝Mysql5.7.11,在配置mysql server時老是卡住,報錯。下面小編把安裝方法分享給大家,供大家參考2016-08-08

