1. 概述
MySQL的CASE函数可以执行多条件判断并返回相应的值。这个函数可以嵌套多个CASE函数实现更复杂的逻辑,是SQL语句中非常有用的一个函数。本文将介绍如何使用MySQL中的CASE函数执行多条件判断。
2. 基本语法
MySQL中的CASE函数基本语法如下:
CASE WHEN condition1 THEN result1
WHEN condition2 THEN result2
ELSE result3
END
其中,condition可以是任何表达式,用来判断是否成立。如果condition1成立,则返回result1的值;如果condition1不成立,但condition2成立,则返回result2的值;否则返回result3的值。
2.1 示例1:基本用法
下面是一个简单的示例:
SELECT
CASE WHEN num = 1 THEN 'One'
WHEN num = 2 THEN 'Two'
ELSE 'Other'
END AS result
FROM
my_table;
在这个SQL语句中,我们根据num的值返回不同的字符串。如果num等于1,返回'One';如果num等于2,返回'Two';否则返回'Other'。
3. 嵌套使用
CASE函数可以嵌套使用,实现更复杂的逻辑。在嵌套使用时,可以把一个CASE语句的结果作为另一个CASE语句的输入。下面是一个嵌套使用的示例:
SELECT
CASE
WHEN score >= 90 THEN 'A'
WHEN score >= 80 THEN 'B'
ELSE
CASE
WHEN score >= 70 THEN 'C'
WHEN score >= 60 THEN 'D'
ELSE 'F'
END
END AS grade
FROM
my_table;
在这个SQL语句中,我们根据score的值返回不同的成绩等级。如果score大于等于90,返回'A';如果score大于等于80,返回'B';否则我们又嵌套了一个CASE语句,在其中判断score的值,如果score大于等于70,返回'C';如果score大于等于60,返回'D';否则返回'F'。
3.1 示例2:嵌套使用
下面是一个更复杂的嵌套使用示例:
SELECT
CASE
WHEN type = 'A' THEN
CASE
WHEN size > 10 THEN 'Large A'
WHEN size > 5 THEN 'Medium A'
ELSE 'Small A'
END
WHEN type = 'B' THEN
CASE
WHEN size > 10 THEN 'Large B'
WHEN size > 5 THEN 'Medium B'
ELSE 'Small B'
END
ELSE 'Other'
END AS result
FROM
my_table;
在这个SQL语句中,我们首先根据type的值进行判断。如果type等于'A',又嵌套了一个CASE函数,在其中根据size的值返回不同的结果:如果size大于10,返回'Large A';如果size大于5,返回'Medium A';否则返回'Small A'。如果type等于'B',同样嵌套了一个CASE函数,在其中根据size的值返回不同的结果:如果size大于10,返回'Large B';如果size大于5,返回'Medium B';否则返回'Small B'。否则返回'Other'。
4. 使用函数
我们还可以在CASE语句中使用MySQL提供的函数,实现更复杂的逻辑。下面是一个使用函数的示例:
SELECT
CASE
WHEN MOD(id, 2) = 0 THEN CONCAT(name, ' is even')
ELSE CONCAT(name, ' is odd')
END AS result
FROM
my_table;
在这个SQL语句中,我们首先使用MOD函数判断id是否为偶数。如果是偶数,使用CONCAT函数返回一个字符串,表示该行记录的name属性是偶数。否则返回一个表示该行记录的name属性是奇数的字符串。
4.1 示例3:使用函数
下面是一个更复杂的使用函数的示例:
SELECT
CASE
WHEN price < 1000 THEN price * 0.9
WHEN price < 5000 THEN price * 0.8
WHEN price < 10000 THEN price * 0.7
ELSE price * 0.6
END AS discount_price
FROM
my_table;
在这个SQL语句中,我们根据price的值返回不同的折扣价。如果price小于1000,返回原价的90%;如果price小于5000,返回原价的80%;如果price小于10000,返回原价的70%;否则返回原价的60%。
5. 总结
本文介绍了MySQL中的CASE函数的用法,包括基本语法、嵌套使用、以及使用函数等。这个函数是SQL语句中非常重要的一个函数,在实际的开发中,可以根据需要灵活使用,实现各种复杂的逻辑判断。