CASE 表达式
CASE
表达式是一个通用条件表达式,可在表达式有效的情况下使用。它与其他语言的 CASE
和 IF/THEN/ELSE
语句相似。
语法(第一种形式)
CASE
WHEN condition THEN result
[ WHEN condition THEN result ]
...
[ ELSE result ]
END
参数
语法(第二种形式)
CASE expression
WHEN value THEN result
[ WHEN value THEN result ]
...
[ ELSE result ]
END
参数
注意
所有 result 表达式的数据类型必须可转换为一个输出类型。
示例
以下示例显示了 CASE
语句的两种使用方法。
=> SELECT * FROM test;
a
---
1
2
3
=> 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
=> SELECT a,
CASE a WHEN 1 THEN 'one'
WHEN 2 THEN 'two'
ELSE 'other'
END
FROM test;
a | case
---+-------
1 | one
2 | two
3 | other
特殊示例
CASE
表达式不会对无需确定结果的子表达式求值。您可以使用此行为来避免被零除错误:
=> SELECT x FROM T1 WHERE
CASE WHEN x <> 0 THEN y/x > 1.5
ELSE false
END;