从MSSQL中探索CASE函数的奥秘

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中选择column1column2,并根据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的值不为123时,将返回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.5column4等于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

此查询根据两个条件分别返回OneTwo-YesTwo-NoOther

5. 总结

CASE表达式是SQL的一个强大工具,可用于选择特定条件下的数据或计算结果。它可以基于不同的条件表达式返回不同的结果,并可以嵌套使用。熟练地使用CASE表达式可以使查询更加灵活和强大。

数据库标签