CASE WHEN的使用
格式
CASE WHEN condition THEN result
[WHEN ...]
[ELSE result]
END
CASE子句可以用于任何表达式可以有效存在的地方。condition是一个返回boolean的表达式。如果结果为真,那么CASE表达式的结果就是符合条件的result。如果结果为假,那么以相同方式搜寻随后的WHEN子句。如果没有WHEN condition为真,那么CASE表达式的结果就是在ELSE子句里的值。如果省略了ELSE子句而且没有匹配的条件,结果为NULL。
例如:
SELECT a,CASE WHEN a = 1 THEN 'one'WHEN a = 2 THEN 'two'ELSE 'other'ENDFROM test
?
a | case--|--------1 | one2 | two3 | other4 | other
?
注意:所有result表达式的数据的类型都必须可以转换成单一的输出类型。
除此之外,还有另外一种书写形式,如下所示:
CASE expression
WHEN value THEN result
[WHEN ...]
[ELSE result]
END
先计算expression的值,然后与所有在WHEN子句中声明的value对比,直到找到一个相等的。如果没有找到匹配的,则返回在ELSE子句里的result(或者NULL)
以上例子也可以写成:
SELECT a,CASE a WHEN 1 THEN 'one'WHEN 2 THEN 'two'ELSE 'other'ENDFROM test
执行结果相同