日期:2014-05-16 浏览次数:20374 次
格式
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
执行结果相同