MySQL CASE-WHEN-END语句
时间:2019-02-04 12:52:32 来源:igfitidea点击:
在MySQL中,CASE语句类似于IF-THEN-ELSE语句的功能,并且有两种语法。
语法
MySQL中CASE语句的语法为:
CASE expression WHEN value_1 THEN {...statements to execute when expression equals value_1...} [ WHEN value_2 THEN {...statements to execute when expression equals value_2...} ] [ WHEN value_n THEN result_n {...statements to execute when expression equals value_n...} ] [ ELSE {...statements to execute when no values matched...} ] END CASE;
或者
CASE WHEN condition_1 THEN {...statements to execute when condition_1 is TRUE...} [ WHEN condition_2 THEN {...statements to execute when condition_2 is TRUE...} ] [ WHEN condition_n THEN {...statements to execute when condition_n is TRUE...} ] [ ELSE {...statements to execute when all conditions were FALSE...} ] END CASE;
区别是一个提供值value_1,判断条件在case后面,一个提供判断条件condition_1
参数 | 说明 |
---|---|
expression | 要与值列表(即:value_1,value_2,... value_n)进行比较的表达式或者值。 |
value_1, value_2, ... value_n | 判断条件值 |
condition_1,condition2,... condition_n | 判断条件(表达式) |
MySQL CASE-WHEN-END语句示例
首先,我们来看一下CASE语句的第一种语法的示例:
DELIMITER // CREATE FUNCTION IncomeLevel ( monthly_value INT ) RETURNS varchar(20) BEGIN DECLARE income_level varchar(20); CASE monthly_value WHEN 4000 THEN SET income_level = 'Low Income'; WHEN 5000 THEN SET income_level = 'Avg Income'; ELSE SET income_level = 'High Income'; END CASE; RETURN income_level; END; // DELIMITER ;
让我们看看第二种语法:
SELECT ITEM_NAME, CASE WHEN severity =0 THEN '正常' WHEN severity =-1 THEN '未知' ELSE '异常' END AS STATE FROM `monitors`