在postgres中解码相当于

时间:2013-03-07 03:06:09

标签: sql oracle postgresql

没有与Oracle解码功能等效的功能 在Postgres中。是否有人将解码编写为函数?

3 个答案:

答案 0 :(得分:12)

有一个等价物。它被称为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语句更容易阅读;在Oracle中,我更喜欢这些decode()

答案 1 :(得分:2)

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

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

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

答案 2 :(得分:0)

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

SELECT COALESCE(NULLIF(value,0),newValue)FROM table;

字体:Coalesce for zero instead of null