MySQL中的CASE()函數用於在任何條件滿足給定語句時通過傳遞條件來查找值,否則它將在else部分中返回該語句。但是,當滿足條件時,它將停止進一步讀取並返回輸出。
特征:
- 如果所有陳述的條件都不成立,則此函數返回else部分中的語句。
- 如果所有陳述的條件都不成立,並且沒有其他條件,則此函數返回NULL。
- 此函數位於“高級函數”下。
- 該函數接受兩個參數,即條件和結果。
用法:
CASE WHEN condition1 THEN result1 WHEN condition2 THEN result2 WHEN conditionN THEN resultN ELSE result END;
參數:
此方法接受以下兩個參數:
- condition1,condition2,…conditionN:規定的條件按陳述的順序確定。
- result1,result2,... resultN:滿足指定條件時將返回的指定輸出。
返回值:每當任何條件滿足給定語句時,它都會通過傳遞條件來返回值,否則它將在else部分中返回該語句。並且,如果沒有條件滿足,也沒有其他部分,則返回NULL。
範例1:使用CASE()函數並獲取輸出。
CREATE TABLE float01001 ( user_id int NOT NULL AUTO_INCREMENT, float_val float, PRIMARY KEY(user_id) ); INSERT float01001(float_val) VALUES (1.9); INSERT float01001(float_val) VALUES (1.1); INSERT float01001(float_val) VALUES (3.9); INSERT float01001(float_val) VALUES (5.0); INSERT float01001(float_val) VALUES (10.9); SELECT float_val, CASE WHEN float_val > 5 THEN "The value is greater than 5" WHEN float_val = 5 THEN "The value is 5" ELSE "The value is under 5" END as float_txt FROM float01001;
輸出:
float_val | float_txt ------------------------------------------- 1.9 | The value is under 5 ------------------------------------------- 1.1 | The value is under 5 ------------------------------------------- 3.9 | The value is under 5 ------------------------------------------- 5 | The value is 5 ------------------------------------------- 10.9 | The value is greater than 5
範例2:
使用CASE()函數並檢查指定的浮點值的長度是否大於或小於或等於4。
CREATE TABLE float01001 ( user_id int NOT NULL AUTO_INCREMENT, float_val float, PRIMARY KEY(user_id) ); INSERT float01001(float_val) VALUES (9.0); INSERT float01001(float_val) VALUES (7.7); INSERT float01001(float_val) VALUES (30.91); INSERT float01001(float_val) VALUES (8.0); INSERT float01001(float_val) VALUES (10.9); SELECT float_val, CASE WHEN LENGTH(float_val) > 4 THEN "The length is greater than 4" WHEN LENGTH(float_val) = 4 THEN "The length is 4" ELSE "The length is less than 4" END as float_txt FROM float01001;
輸出:
float_val | float_txt ------------------------------------------- 9 | The length is less than 4 ------------------------------------------- 7.7 | The length is less than 4 ------------------------------------------- 30.91 | The length is greater than 4 ------------------------------------------- 8.0 | The length is less than 4 ------------------------------------------- 10.9 | The length is 4
範例3:
使用CASE()函數並檢查指定項目的MRP是否大於400。
CREATE TABLE package099 ( user_id int NOT NULL AUTO_INCREMENT, item VARCHAR(10), mrp int, PRIMARY KEY(user_id) ); INSERT package099(item, mrp) VALUES ('book1', 350); INSERT package099(item, mrp) VALUES ('book2', 500); SELECT mrp, CASE WHEN mrp > 400 THEN "Buy this item" ELSE "Don't buy this item" END as txt FROM package099;
輸出:
mrp | txt ------------------------------ 350 | Don't buy this item ------------------------------ 500 | Buy this item
範例4:
使用CASE()函數並檢查損益。
CREATE TABLE package72 ( user_id int NOT NULL AUTO_INCREMENT, item VARCHAR(10), mrp int, sp int, PRIMARY KEY(user_id) ); INSERT package72(item, mrp, sp) VALUES ('book1', 250, 255); INSERT package72(item, mrp, sp) VALUES ('book2', 350, 370); INSERT package72(item, mrp, sp) VALUES ('book3', 400, 350); SELECT mrp,sp, CASE WHEN sp > mrp THEN "Profit" ELSE "Loss" END as PL FROM package72;
輸出:
mrp | sp | PL ----------------------- 250 | 255 | Profit ----------------------- 350 | 370 | Profit ---------------------- 400 | 350 | Loss
應用程序:此函數用於在任何條件滿足給定語句時通過傳遞條件來查找值,否則它將在else部分中返回該語句。
相關用法
- MySQL LEAD() and LAG()用法及代碼示例
- MySQL BIN()用法及代碼示例
- MySQL LAST_DAY()用法及代碼示例
- MySQL WEEKOFYEAR()用法及代碼示例
- MySQL MOD()用法及代碼示例
- MySQL Group_CONCAT()用法及代碼示例
- MySQL DEFAULT()用法及代碼示例
- MySQL AES_ENCRYPT()用法及代碼示例
- MySQL AES_DECRYPT()用法及代碼示例
- MySQL MD5用法及代碼示例
- MySQL COMPRESS( )用法及代碼示例
- MySQL PASSWORD用法及代碼示例
- MySQL DES_DECRYPT()用法及代碼示例
- MySQL DES_ENCRYPT()用法及代碼示例
- MySQL DECODE( )用法及代碼示例
- MySQL ENCODE( )用法及代碼示例
- MySQL ISNULL( )用法及代碼示例
- MySQL NULLIF( )用法及代碼示例
- MySQL VERSION()用法及代碼示例
- MySQL USER( )用法及代碼示例
- MySQL CONVERT( )用法及代碼示例
注:本文由純淨天空篩選整理自nidhi1352singh大神的英文原創作品 CASE() Function in MySQL。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。