1. CASE函数介绍
CASE函数是一种条件表达式,根据条件返回一个结果。它接受一个或多个条件表达式和一个可选的else子句,如果没有匹配的条件,则返回else子句中指定的结果。它经常用作SELECT语句的一部分来选择数据或给出计算结果。
条件表达式可以是一个简单的比较(例如,column1 = 'value'
)或一个更复杂的表达式(例如,column1 + column2 + column3 >= 10
)。可以根据需要使用逻辑运算符例如AND和OR等组合条件,以及使用函数。每个条件表达式都按顺序进行评估,直到找到匹配的条件。如果没有条件匹配,则返回else子句中指定的结果。如果没有else子句,则返回NULL。
2. 简单的CASE表达式
简单的CASE表达式基于某个条件的值选择要返回的结果。以下是一个简单的示例:
SELECT column1, column2,
CASE column3
WHEN 1 THEN 'One'
WHEN 2 THEN 'Two'
WHEN 3 THEN 'Three'
END as 'NewColumn'
FROM table1
这将从table1
中选择column1
和column2
,并根据column3
的值返回一个新的列NewColumn
。如果column3
的值为1
,则返回One
,值为2
,则返回Two
,以此类推。如果没有匹配的值,则返回NULL。
2.1 使用“ELSE”子句
选择不匹配于任何WHEN子句中的值时,可以使用ELSE
子句:
SELECT column1, column2,
CASE column3
WHEN 1 THEN 'One'
WHEN 2 THEN 'Two'
WHEN 3 THEN 'Three'
ELSE 'Other'
END as 'NewColumn'
FROM table1
当column3
的值不为1
、2
、3
时,将返回Other
。
3. 搜索CASE表达式
CASE也可以使用搜索表达式,这允许更多的比较运算符(例如大于或小于),并且可以使用逻辑运算符。
SELECT column1, column2,
CASE
WHEN column3 > 0.5 AND column4 = 'Yes' THEN 'High'
WHEN column3 > 0.25 THEN 'Medium'
ELSE 'Low'
END as 'Priority'
FROM table1
此查询根据两个条件(column3
大于0.5
且column4
等于Yes
)返回High
,否则,如果只有第一个条件满足(column3
大于0.25
),则返回Medium
。最后,如果没有条件被满足,它返回Low
。
4. 嵌套CASE表达式
CASE表达式也可以嵌套。以下是一个示例:
SELECT column1, column2,
CASE column3
WHEN 1 THEN 'One'
WHEN 2 THEN
CASE column4
WHEN 'Yes' THEN 'Two-Yes'
ELSE 'Two-No'
END
ELSE 'Other'
END as 'NewColumn'
FROM table1
此查询根据两个条件分别返回One
、Two-Yes
或Two-No
或Other
。
5. 总结
CASE表达式是SQL的一个强大工具,可用于选择特定条件下的数据或计算结果。它可以基于不同的条件表达式返回不同的结果,并可以嵌套使用。熟练地使用CASE表达式可以使查询更加灵活和强大。