當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


MySQL CASE()用法及代碼示例


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部分中返回該語句。

相關用法


注:本文由純淨天空篩選整理自nidhi1352singh大神的英文原創作品 CASE() Function in MySQL。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。