23

没有等同于Oracle' DECODE()'Function InPostgres` 的东西。有没有人将 decode 作为函数编写?

4

3 回答 3

25

有一个等价物。这叫做CASE声明。

CASE有两种形式:

简单案例:

CASE search-expression
    WHEN expression [, expression [ ... ]] THEN
      statements
  [ WHEN expression [, expression [ ... ]] THEN
      statements
    ... ]
  [ ELSE
      statements ]
END CASE;

搜索案例:

CASE
    WHEN boolean-expression THEN
      statements
  [ WHEN boolean-expression THEN
      statements
    ... ]
  [ ELSE
      statements ]
END CASE;

CASE陈述更容易阅读;decode()在 Oracle 中,我更喜欢这些。

于 2013-03-07T03:13:27.767 回答
3

如果您习惯了 Oracle 特定的功能,您可能需要安装 PostgreSQL 扩展orafce

在其他 Oracle 特定功能中,orafce还实现DECODE了您正在寻找的功能。

如果您在 Ubuntu 上运行,您只需要安装软件包postgresql-9.1-orafce即可orafce在您的 PostgreSQL 服务器中使用。

于 2013-03-07T05:36:27.983 回答
1

您可以将 NULLIF 与 COALESCE 结合使用:

从表中选择 COALESCE(NULLIF(value, 0), newValue);

字体:合并为零而不是 null

于 2018-05-02T21:00:20.067 回答