问题 在postgres中解码相当于


没有与Oracle解码函数等效的东西 在Postgres.Is有谁写解码作为一个函数?


6008
2018-03-07 03:06


起源

如果你描述那个函数的作用,你可能会有更好的运气。因为知道Postgres而不是Oracle的任何人都会在没有首先研究的情况下完全无法提供答案。 - qqx
没有简短的查找类似 decode,但您可以使用SQL标准 CASE 声明。 - Craig Ringer


答案:


有一个等价物。它叫做a 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中


10
2018-03-07 03:13



我太喜欢了 CASE 过度 decode() - a_horse_with_no_name


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

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

如果你在Ubuntu上运行,你只需要安装包 postgresql-9.1-orafce 制作 orafce 在PostgreSQL服务器中可用。


2
2018-03-07 05:36



在Windows中,我该如何安装这个? - vmb
它应该是可能的 - 我从未尝试过。好吧,我在Windows上尝试过Postgres,但与Linux相比,它运行得慢得多,我从未回头。如果你关心性能,你真的不应该在Windows上运行PostgreSQL - 看看 这是PostgreSQL开发人员之一的回答。 - mvp
如何在Windows上安装..可以分享下载链接 - vmb
如果你愿意安装 mingw 和其他构建工具一样,你应该能够从源代码构建PostgreSQL,然后进行编译和安装 orafce 使用标准 pgxs 扩展编译机制 - 它 所有文件。大多数人更喜欢从包中安装Postgres,而不是从源代码编译它 - 大多数时候这是真正的showstopper。这就是Ubuntu提供PostgreSQL和所有其他扩展的原因 orafce 因为标准软件包在Linux上使事情变得如此简单。 - mvp
我想..然后使用'case'语句会更好 - vmb


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

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

字体: 合并为零而不是null


0
2018-05-02 21:00