没有与Oracle解码功能等效的功能 在Postgres中。是否有人将解码编写为函数?
答案 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;