Mysql CASE IF 判空的具體使用
簡(jiǎn)介
MySQL 中的條件表達(dá)式用于根據(jù)條件的結(jié)果選擇不同的值或執(zhí)行不同的操作。條件表達(dá)式可以在 SELECT 語(yǔ)句中生成計(jì)算字段、在 WHERE 語(yǔ)句中過(guò)濾數(shù)據(jù)、在 ORDER BY 語(yǔ)句中排序等多種情況下使用
CASE表達(dá)式
在 MySQL 中,CASE 表達(dá)式是一種條件表達(dá)式,它允許根據(jù)特定條件對(duì)不同的值進(jìn)行選擇和返回。CASE 表達(dá)式可以用于 SELECT 語(yǔ)句、WHERE 子句、ORDER BY 子句等多個(gè)上下文中。
CASE 表達(dá)式有兩種形式:簡(jiǎn)單 CASE 表達(dá)式和搜索 CASE 表達(dá)式。
1. 簡(jiǎn)單 CASE 表達(dá)式:
簡(jiǎn)單 CASE 表達(dá)式通過(guò)對(duì)一個(gè)表達(dá)式進(jìn)行匹配來(lái)選擇返回的結(jié)果。它的語(yǔ)法如下:
CASE expression WHEN value1 THEN result1 WHEN value2 THEN result2 ... ELSE else_result END
在這個(gè)形式中,expression
是要比較的表達(dá)式,value1
, value2
, … 是要匹配的值,result1
, result2
, … 是與每個(gè)值匹配時(shí)返回的結(jié)果。else_result
是可選的,表示當(dāng)沒(méi)有匹配到任何值時(shí)的默認(rèn)結(jié)果。
以下是一個(gè)簡(jiǎn)單 CASE 表達(dá)式的示例:
SELECT CASE grade WHEN 'A' THEN 'Excellent' WHEN 'B' THEN 'Good' WHEN 'C' THEN 'Average' ELSE 'Below Average' END AS grade_category FROM students;
2. 搜索 CASE 表達(dá)式:
搜索 CASE 表達(dá)式允許使用更復(fù)雜的條件進(jìn)行匹配,并返回相應(yīng)的結(jié)果。它的語(yǔ)法如下:
CASE WHEN condition1 THEN result1 WHEN condition2 THEN result2 ... ELSE else_result END
在這個(gè)形式中,每個(gè) WHEN
子句都可以包含一個(gè)條件,當(dāng)條件滿(mǎn)足時(shí)返回相應(yīng)的結(jié)果。ELSE
子句是可選的,默認(rèn)返回結(jié)果??梢允褂枚鄠€(gè) WHEN
子句來(lái)處理不同的條件。
以下是一個(gè)搜索 CASE 表達(dá)式的示例:
SELECT CASE WHEN score >= 90 THEN 'A' WHEN score >= 80 THEN 'B' WHEN score >= 70 THEN 'C' ELSE 'F' END AS grade FROM exam_results;
IF 表達(dá)式
MySQL 中的 IF 表達(dá)式是一種條件表達(dá)式,根據(jù)給定的條件返回不同的值。它可以用于 SELECT 語(yǔ)句中生成計(jì)算字段、在 WHERE 語(yǔ)句中過(guò)濾數(shù)據(jù)、在 ORDER BY 語(yǔ)句中排序等多種情況下。
IF 表達(dá)式的語(yǔ)法如下:
IF(condition, value_if_true, value_if_false)
其中,condition 是一個(gè)表達(dá)式或條件,value_if_true 是在條件為真時(shí)返回的值,value_if_false 是在條件為假時(shí)返回的值。
以下是 IF 表達(dá)式的詳細(xì)介紹:
- condition:IF 表達(dá)式中的條件。它可以是一個(gè)布爾表達(dá)式、比較表達(dá)式、邏輯表達(dá)式或其他返回布爾值的表達(dá)式。
- value_if_true:當(dāng) condition 為真時(shí)返回的值。它可以是一個(gè)常量、列名、表達(dá)式或函數(shù)。
- value_if_false:當(dāng) condition 為假時(shí)返回的值。它可以是一個(gè)常量、列名、表達(dá)式或函數(shù)。
IF 表達(dá)式的工作原理如下:
- 如果 condition 為真(非零),則 IF 表達(dá)式的結(jié)果為 value_if_true。
- 如果 condition 為假(零或 NULL),則 IF 表達(dá)式的結(jié)果為 value_if_false。
示例用法:
SELECT name, IF(score >= 60, 'Pass', 'Fail') AS result FROM students;
上述示例中,根據(jù)學(xué)生的分?jǐn)?shù)是否大于等于 60,將結(jié)果集中的每個(gè)學(xué)生標(biāo)記為 ‘Pass’ 或 ‘Fail’。
IF 表達(dá)式在處理?xiàng)l件邏輯和結(jié)果生成時(shí)非常有用,可以根據(jù)不同的條件返回不同的值,使數(shù)據(jù)處理更加靈活和可控。
NULL 值處理
在 MySQL 中,NULL 值表示缺少值或未知值。處理 NULL 值是數(shù)據(jù)庫(kù)查詢(xún)和數(shù)據(jù)處理中的常見(jiàn)任務(wù)。以下是 MySQL 中處理 NULL 值的方法及相應(yīng)的示例 SQL:
1. IS NULL 和 IS NOT NULL 運(yùn)算符:
IS NULL 用于判斷某個(gè)列是否為 NULL。例如,查詢(xún)名為 customers
的表中姓氏為 NULL 的客戶(hù):
SELECT * FROM customers WHERE last_name IS NULL;
IS NOT NULL 用于判斷某個(gè)列是否不為 NULL。例如,查詢(xún)名為 products
的表中庫(kù)存數(shù)量不為 NULL 的產(chǎn)品:
SELECT * FROM products WHERE inventory_count IS NOT NULL;
2. COALESCE 函數(shù):
COALESCE 函數(shù)用于返回參數(shù)列表中的第一個(gè)非 NULL 值。如果所有參數(shù)都為 NULL,則返回 NULL。例如,查詢(xún)名為 employees
的表中員工的姓名,如果姓名為 NULL,則返回 ‘Unknown’:
SELECT COALESCE(first_name, 'Unknown') AS name FROM employees;
3. IFNULL 函數(shù):
IFNULL 函數(shù)用于判斷某個(gè)列是否為 NULL,并返回相應(yīng)的替代值。如果列的值為 NULL,則返回指定的替代值;如果列的值不為 NULL,則返回列的原始值。例如,查詢(xún)名為 orders
的表中訂單的總金額,如果總金額為 NULL,則返回 0:
SELECT IFNULL(total_amount, 0) AS amount FROM orders;
4. NULLIF 函數(shù):
NULLIF 函數(shù)用于比較兩個(gè)表達(dá)式的值,如果兩個(gè)值相等,則返回 NULL;如果兩個(gè)值不相等,則返回第一個(gè)表達(dá)式的值。它常用于避免某個(gè)列的值與特定值相等時(shí)返回該列的值,而是返回 NULL。例如,查詢(xún)名為 students
的表中成績(jī)?yōu)?100 的學(xué)生的姓名,如果成績(jī)?yōu)?100,則返回 NULL:
SELECT NULLIF(score, 100) AS name FROM students;
這些方法可以根據(jù)需要在 SQL 查詢(xún)中處理 NULL 值。通過(guò)使用 IS NULL 和 IS NOT NULL 運(yùn)算符、COALESCE 函數(shù)、IFNULL 函數(shù)和 NULLIF 函數(shù),可以進(jìn)行條件判斷、替代值設(shè)置和結(jié)果處理,以更好地處理和處理 NULL 值。
結(jié)論
以上是 MySQL 中常見(jiàn)的條件表達(dá)式及其詳細(xì)介紹。這些條件表達(dá)式可以根據(jù)不同的條件進(jìn)行數(shù)據(jù)處理、結(jié)果返回和條件判斷,提供了靈活的方式來(lái)操作和過(guò)濾數(shù)據(jù)。
到此這篇關(guān)于Mysql CASE IF 判空的具體使用的文章就介紹到這了,更多相關(guān)Mysql CASE IF 判空內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- MySQL視圖中如何使用IF和CASE語(yǔ)句
- MySQL如何根據(jù)不同條件聯(lián)查不同表的數(shù)據(jù)if/case
- MySQL使用IF語(yǔ)句及用case語(yǔ)句對(duì)條件并結(jié)果進(jìn)行判斷?
- MySQL控制流函數(shù)(-if?,elseif,else,case...when)
- 深入淺析MySQL 中 Identifier Case Sensitivity問(wèn)題
- MySQL中的if和case語(yǔ)句使用總結(jié)
- MYSQL中有關(guān)SUM字段按條件統(tǒng)計(jì)使用IF函數(shù)(case)問(wèn)題
- mysql中IFNULL,IF,CASE的區(qū)別介紹
相關(guān)文章
Mysql中報(bào)錯(cuò)函數(shù)floor()函數(shù)和rand()函數(shù)的配合使用及原理詳解
在項(xiàng)目中的SQL語(yǔ)句中遇到幾個(gè)數(shù)值處理函數(shù),看著有些懵,就小小的總結(jié)一下,這篇文章主要給大家介紹了關(guān)于Mysql中報(bào)錯(cuò)函數(shù)floor()函數(shù)和rand()函數(shù)的配合使用及原理的相關(guān)資料,需要的朋友可以參考下2022-07-07mysql查詢(xún)本周內(nèi)每天統(tǒng)計(jì)量按天展示的示例代碼
本文主要介紹了mysql查詢(xún)本周內(nèi)每天統(tǒng)計(jì)量按天展示的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-05-05MySQL中實(shí)現(xiàn)多表查詢(xún)的操作方法(配sql+實(shí)操圖+案例鞏固 通俗易懂版)
本文主要講解了MySQL中的多表查詢(xún),包括子查詢(xún)、笛卡爾積、自連接、多表查詢(xún)的實(shí)現(xiàn)方法以及多列子查詢(xún)等,通過(guò)實(shí)際例子和操作,幫助讀者理解如何合并多個(gè)表的數(shù)據(jù),并進(jìn)行復(fù)雜的查詢(xún)操作,感興趣的朋友一起看看吧2025-03-03sql如何使用group by分組,同時(shí)查詢(xún)其它字段
文章介紹了使用SQL的GROUP BY進(jìn)行分組查詢(xún)時(shí)的一些規(guī)則和技巧,主要強(qiáng)調(diào)了在SELECT后面的字段要么是聚合函數(shù)的一部分,要么必須包含在GROUP BY子句中,此外,文章還討論了如何在GROUP BY時(shí)查詢(xún)其他字段,通過(guò)使用MAX或MIN函數(shù)來(lái)實(shí)現(xiàn)2024-12-12ARM64架構(gòu)下安裝mysql5.7.22的全過(guò)程
這篇文章主要介紹了ARM64架構(gòu)下安裝mysql5.7.22的全過(guò)程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-07-07如何解決mysql出現(xiàn)Incorrect string value for co
這篇文章主要介紹了如何解決mysql出現(xiàn)Incorrect string value for column ‘表項(xiàng)‘ at row 1錯(cuò)誤問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-03-03mysql實(shí)現(xiàn)根據(jù)多個(gè)字段查找和置頂功能
在mysql中,如果要實(shí)現(xiàn)根據(jù)某個(gè)字段排序的時(shí)候,可以使用下面的SQL語(yǔ)句,下面為大家介紹下如何實(shí)現(xiàn)根據(jù)多個(gè)字段查找和置頂功能2013-11-11