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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。