CASE 表达式

CASE 表达式是一个通用条件表达式,可在表达式有效的情况下使用。它与其他语言的 CASEIF/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;