SqlServer中的Case When语句可以根据一些条件来返回不同的值,类似于其他编程语言中的if-else或switch-case结构。Case When语句有两种形式:简单形式和搜索形式。
简…
SqlServer中的Case When语句可以根据一些条件来返回不同的值,类似于其他编程语言中的if-else或switch-case结构。Case When语句有两种形式:简单形式和搜索形式。
简单形式的Case When语句如下:
CASE input_expression WHEN when_expression THEN result_expression [ ...n ] [ ELSE else_result_expression ] END
这种形式的Case When语句会将输入表达式与每个when表达式进行比较,如果相等,则返回对应的结果表达式。如果没有任何一个when表达式与输入表达式相等,且存在else结果表达式,则返回else结果表达式。如果没有任何一个when表达式与输入表达式相等,且不存在else结果表达式,则返回NULL。
例如,下面的语句会根据学生的成绩返回不同的等级:
SELECT name, score, CASE score WHEN 90 THEN 'A' WHEN 80 THEN 'B' WHEN 70 THEN 'C' WHEN 60 THEN 'D' ELSE 'E' END AS grade FROM student;
搜索形式的Case When语句如下:
CASE WHEN Boolean_expression THEN result_expression [ ...n ] [ ELSE else_result_expression ] END
这种形式的Case When语句会依次评估每个布尔表达式,如果为真,则返回对应的结果表达式。如果没有任何一个布尔表达式为真,且存在else结果表达式,则返回else结果表达式。如果没有任何一个布尔表达式为真,且不存在else结果表达式,则返回NULL。
例如,下面的语句会根据员工的年龄和性别返回不同的奖金:
SELECT name, age, gender, CASE WHEN age > 50 AND gender = 'M' THEN 1000 WHEN age > 50 AND gender = 'F' THEN 1200 WHEN age <= 50 AND gender = 'M' THEN 800 WHEN age <= 50 AND gender = 'F' THEN 900 END AS bonus FROM employee;
原创文章,作者:admin,如若转载,请注明出处:https://www.it168.online/pcinfo/2664/