CASE表达式是一个特殊的T⁃SQL表达式,能够实现多重选择的情况。CASE不同于一个普通的T⁃SQL语句,不能单独执行,而只能作为一个可以单独执行的语句的一部分来使用。CASE表达式分为简单的CASE表达式和搜索CASE表达式两种类型。
1.简单CASE表达式
简单CASE表达式是将一个测试表达式与一组简单表达式进行比较,如果某个简单表达式与测试表达式的值一致,则返回相应结果表达式的值。简单CASE表达式的语法格式如下。
其中,测试表达式用于条件判断,测试值用于与测试表达式做比较,测试表达式必须与测试值的数据类型相同。
简单CASE表达式必须以CASE开头并以END结束,它能够将一个表达式和一系列的测试值进行比较,并返回符合条件的结果表达式。
简单CASE表达式的执行过程是:用测试表达式的值依次与每一个WHEN子句的测试值比较,直到找到第一个与测试表达式的值完全相同的测试值时,便将该WHEN子句指定的结果表达式返回。如果没有任何一个WHEN自己的测试值和测试表达式相同,SQL Server将检查是否有ELSE子句存在,如果存在ELSE子句,便将ELSE子句之后的结果表达式返回;如果不存在ELSE子句,便返回一个NULL值。
注意:在一个简单CASE表达式中,一次只能有一个WHEN子句指定的结果表达式返回。若同时有多个测试值与测试表达式的值相同,则只有第一个与测试表达式的值相同的WHEN子句指定的结果表达式返回。
【例6-8】 使用简单CASE表达式实现以下功能:根据教师表,分别输出教师编号、职称和备注,并根据教师职称标注教师的职称级别。
代码如下。
运行结果如图6-6所示。
(www.xing528.com)
图6-6 简单CASE表达式示例
2.搜索CASE表达式
与简单CASE表达式相比较,在搜索CASE表达式中,CASE关键字后面不跟任何表达式,各个WHEN子句后都是逻辑表达式。搜索CASE表达式的语法格式如下。
其执行过程是:测试每个WHEN子句后的逻辑表达式,如果结果为TRUE,则返回相应的结果表达式;否则检查是否有ELSE子句。如果存在ELSE子句,便返回ELSE子句之后的结果表达式;如果不存在ELSE子句,便返回一个NULL值。
图6-7 使用搜索CASE表达式示例
【例6-9】 使用搜索CASE表达式实现以下功能:根据成绩表,分别输出学号、课程号,并根据学生成绩判别学生成绩的等级。
代码如下。
运行结果如图6-7所示。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。