日期:2014-05-16  浏览次数:20349 次

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'
END
FROM test

?

a | case
--|--------
1 | one
2 | two
3 | other
4 | 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'
END
FROM test


执行结果相同