一、IF函數
IF函數是MySQL中常用的條件判斷函數之一,語法如下:
IF(expr1, expr2, expr3)
其中expr1為條件表達式,如果為真則返回expr2的結果,否則返回expre3的結果。可以簡單理解為:
若條件成立,則返回A,否則返回B
二、CASE函數
CASE函數也是MySQL中常見的條件函數之一,它類似於程序中的switch語句,可以根據不同的條件返回不同的結果。它有兩種語法形式:
1、簡單CASE:
CASE expr WHEN value1 THEN result1 WHEN value2 THEN result2 ... ELSE result END
其中,expr 為需要被匹配的表達式,後面的 WHEN…THEN 子句為條件判斷語句,當 expr 匹配某一 value 時,才會執行 result。當 expr 不匹配任何 value 時,才會執行 ELSE 後面的 result。
2、搜索CASE:
CASE WHEN condition1 THEN result1 WHEN condition2 THEN result2 ... ELSE result END
與簡單 CASE 相比,搜索 CASE 在語法上不需要提供任何表達式或者其他條件。只需要根據需要的匹配和匹配後的結果即可。其條件不是基於一個固定的表達式,而是基於提供的條件逐項檢查,一旦找到合適的條件就執行結果。
三、IF和CASE的應用場景
1、數據篩選和分類
IF語句通常用於數據篩選和分類。例如,我們可以使用IF來識別顧客是否大於平均數量購買了某個產品。
SELECT customerName, IF(orderAmount > AVG(orderAmount), 'Above Average', 'Below Average') AS 'Purchase' FROM orders GROUP BY customerName;
以上代碼以客戶名稱為分組條件,計算客戶所訂購的金額是否高於平均值,並根據結果分類。
2、數據替換和轉換
我們也可以使用CASE來替換或轉換數據。例如:
SELECT employeeName, title, CASE WHEN title = 'Sales Manager' THEN 'Senior Sales Manager' WHEN title = 'Sales Representative' THEN 'Junior Sales Manager' ELSE 'Unknown Role' END AS 'NewTitle' FROM employees;
以上代碼將 titles 列中的字符細分成不同的類別,並替換成新的詳細數據。
3、數據排序和排名
IF語句可以使用在排序和排名中,用於排序規則的定義。
SELECT productName, productVendor, buyPrice, IF(productVendor = 'Exotic Liquids', 1, IF(productVendor = 'Cruz Del Sur Music', 2, IF(productVendor = 'Gourmet Lanchonetes', 3, 0))) AS 'VendorSeq' FROM products ORDER BY VendorSeq, buyPrice DESC;
以上代碼以 buyPrice 為條件對商品進行排序,並將 productVendor 列中不同的值進行排序。
原創文章,作者:XEKQO,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/362705.html