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

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


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

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

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

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


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

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

2.2 搜索 CASE 語句
允許在 WHEN 子句中使用更復(fù)雜的條件表達(dá)式,而不僅僅是等值比較。
示例:
其表結(jié)構(gòu)如下

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;其結(jié)果如下

到此這篇關(guān)于MySQL 流程控制函數(shù)的文章就介紹到這了,更多相關(guān)mysql流程控制函數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySQL數(shù)據(jù)庫實(shí)現(xiàn)高可用架構(gòu)之MHA的實(shí)戰(zhàn)
本文主要介紹了MySQL數(shù)據(jù)庫實(shí)現(xiàn)高可用架構(gòu)之MHA的實(shí)戰(zhàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02
mysql中數(shù)據(jù)統(tǒng)計(jì)的技巧備忘錄
mysql是常用數(shù)據(jù)庫,對于數(shù)字操作相關(guān)的東西相當(dāng)方便,這篇文章主要給大家介紹了關(guān)于mysql中數(shù)據(jù)統(tǒng)計(jì)技巧的相關(guān)資料,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2018-05-05
MySQL用正則表達(dá)式進(jìn)行搜索功能實(shí)例
MySQL中的正則表達(dá)式是一種強(qiáng)大的文本匹配工具,它允許你使用特定的模式來搜索、替換或檢查字符串中的數(shù)據(jù),這篇文章主要介紹了MySQL用正則表達(dá)式進(jìn)行搜索功能的相關(guān)資料,需要的朋友可以參考下2025-08-08
Ubuntu與windows雙系統(tǒng)下共用MySQL數(shù)據(jù)庫的方法
ubuntu系統(tǒng)和windows系統(tǒng)雙系統(tǒng)共用是用戶喜歡使用的方式之一,而MySQL是一個(gè)小型關(guān)系型數(shù)據(jù)庫管理系統(tǒng),在Windows平臺中常以WAMP方式搭配使用,在Linux平臺中常以LAMP組合形式出現(xiàn),下面的方法可以使得Ubuntu平臺共用Windows平臺中的MySQL數(shù)據(jù)庫2012-01-01

