CASE WHEN语句是MySQL中的一种条件语句,它允许根据给定的条件对不同的值进行赋值。
CASE WHEN的语法结构如下:
CASE WHEN condition1 THEN result1 WHEN condition2 THEN result2 WHEN condition3 THEN result3 ... ELSE result END
相比IF语句,CASE WHEN语句的可读性更高,更易理解。而且在处理多个条件判断时,CASE WHEN的性能更优。
假设我们有一张学生表,其中包含学生ID、姓名、年龄和成绩四个字段。我们可以使用CASE WHEN语句来根据特定的条件计算出每个学生的总成绩。
SELECT ID, Name, CASE WHEN Age< 18 THEN Score * 0.8 WHEN Age >= 18 AND Age< 21 THEN Score * 0.9 ELSE Score END AS TotalScore FROM Students
以上的SQL将会根据学生的年龄计算出每个学生的总成绩。年龄小于18岁的学生将会得到80%的成绩,年龄在18到21岁之间的学生将会得到90%的成绩,年龄超过21岁的学生将会得到全额成绩。
在使用CASE WHEN时,可以通过嵌套多个CASE WHEN语句来实现更复杂的逻辑。此外,也可以使用CASE WHEN来对日期进行格式化,对字符进行分割等。
SELECT CASE WHEN MONTH(Birthday) >= 1 AND MONTH(Birthday)<= 3 THEN 'Spring' WHEN MONTH(Birthday) >= 4 AND MONTH(Birthday)<= 6 THEN 'Summer' WHEN MONTH(Birthday) >= 7 AND MONTH(Birthday)<= 9 THEN 'Fall' WHEN MONTH(Birthday) >= 10 AND MONTH(Birthday)<= 12 THEN 'Winter' END AS Season FROM Students
以上的SQL将会根据学生的生日计算出每个学生的所处季节。根据月份的不同,不同的季节被赋值到每个学生的Season字段中。