2013-03-07 28 views
10

没有等效于Oracle解码功能 在Postgres中是否有任何人将解码写为函数?解码等效于postgres

+3

如果你描述那个函数的功能,你可能会有更好的运气。因为任何知道Postgres的人都知道,但如果没有首先研究Oracle的话,Oracle就完全不能提供答案。 – qqx 2013-03-07 03:11:26

+0

没有像'decode'这样的简单查找,但是可以使用SQL标准CASE语句。 – 2013-03-07 03:17:28

回答

10

有一个等价物。它被称为CASE声明。

有两种形式的CASE:

简单的例子:

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

CASE搜索:

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

CASE语句更容易阅读;我更喜欢这些在Oracle中的decode()

+1

我也喜欢'CASE'而不是'decode()' – 2013-03-07 08:00:23

2

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

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

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

+0

在windows中,我怎么安装这个? – vmb 2013-03-07 11:24:09

+0

它应该是可能的 - 我从来没有尝试过。好吧,我在Windows上试过Postgres,但是与Linux相比,它运行得慢得多,我从不回头。如果你关心性能,你真的不应该在Windows上运行PostgreSQL - 看看[PostgreSQL开发者之一的回答](http://serverfault.com/questions/222430/is-postgresql-suited-to-one-os -is-它,更好,对Linux的超窗口)。 – mvp 2013-03-07 11:54:13

+0

如何在windows上安装..你可以分享下载链接 – vmb 2013-03-07 12:02:16