oracle postgres中的解码等效

tf7tbtn2  于 2023-01-20  发布在  Oracle
关注(0)|答案(4)|浏览(131)

在Postgres中没有与Oracle的DECODE()函数等效的函数。有人把decode写为函数吗?

oyxsuwqo

oyxsuwqo1#

有一个等价的语句,叫做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(),我更喜欢这些。

izkcnapc

izkcnapc2#

您可以将NULLIF与COALESCE结合使用:
从表格中选择合并(NULL(值,0),新值);
字体:Coalesce for zero instead of null

krcsximq

krcsximq3#

如果您习惯使用Oracle特定的函数,则可能需要安装PostgreSQL扩展orafce
在其他Oracle特定函数中,orafce还实现了DECODE-您正在寻找的函数。
如果您运行的是Ubuntu,您只需要安装postgresql-9.1-orafce包就可以在PostgreSQL服务器上使用orafce

b0zn9rqh

b0zn9rqh4#

除了主要答案外,如果在select中使用了case表达式,“END CASE”不适用,只需使用“END”即可。
甲骨文:

select decode(1+1, 2, 'yes', 'no') from dual

邮政:

select case 1+1 when 2 then 'yes' else 'no' end

相关问题