case when then什么时候执行
当完成不同条件的分组时case when then执行。
Case表达式,是可以在sql中使用if ..then..else的逻辑判断,而避免使用PL/SQL的有效方法。语法为:
CASE expression
WHEN expression_11 THEN expression_12
ELSE expression_m
END
该语句的执行过程是:将CASE后面表达式的值与各WHEN子句中的表达式的值进行比较,如果两者相等,则返回THEN后的表达式的值,然后跳出CASE语句,否则返回ELSE子句中的表达式的值。
ELSE子句是可选项。当CASE语句中不包含ELSE子句时,如果所有比较失败时,CASE语句将返回NULL。
注意事项:
Case到end之间相当于一个具体的值,可以做运算,取别名,嵌套case等等。只要把case到end当作一个运算结果的表达式就可以了。
简单case中的表达式,when后面的表达式类型应该全部保持一致。如:select case 'a' when 'a' then 1 when 9 then 3 end from dual。所有的when类型必须与第case之后的表达式值类型保持一致,资料的9应该是 '9',没有自动转换成char,和一般的sql中自动转换不同。