ISNULL()的PostgreSQL等价物是什么?

在MS SQL-Server,我可以做:

SELECT ISNULL(Field,'Empty') from Table

但是在PostgreSQL中,我得到了一个语法错误。我如何模拟ISNULL()功能?

319201 次浏览
SELECT CASE WHEN field IS NULL THEN 'Empty' ELSE field END AS field_alias

或者更地道:

SELECT coalesce(field, 'Empty') AS field_alias

创建以下函数

CREATE OR REPLACE FUNCTION isnull(text, text) RETURNS text AS 'SELECT (CASE (SELECT $1 "
"is null) WHEN true THEN $2 ELSE $1 END) AS RESULT' LANGUAGE 'sql'

它会起作用的。

您可以使用不同的参数类型创建不同的版本。

使用COALESCE()代替:

SELECT COALESCE(Field,'Empty') from Table;

它的功能很像ISNULL,尽管提供了更多的功能。Coalesce将返回列表中的第一个非空值。因此:

SELECT COALESCE(null, null, 5);

返回5,而

SELECT COALESCE(null, 2, 5);

返回2

联合需要大量的论证。没有记录在案的最大值。我测试了100个参数,它成功了。对于绝大多数情况,这应该足够了。

我如何模拟ISNULL()功能?

SELECT (Field IS NULL) FROM ...

试一试:

SELECT COALESCE(NULLIF(field, ''), another_field) FROM table_name