关于sql server:什么是ISNULL()的PostgreSQL等价物

What is the PostgreSQL equivalent for ISNULL()

在MS SQL-Server中,我可以这样做:

SELECT ISNULL(Field,'Empty') from Table

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


1
SELECT CASE WHEN FIELD IS NULL THEN 'Empty' ELSE FIELD END AS field_alias

或者更惯用的:

1
SELECT COALESCE(FIELD, 'Empty') AS field_alias


改为使用COALESCE()

1
SELECT COALESCE(FIELD,'Empty') FROM TABLE;

它的功能与ISNULL非常相似,但功能更多。 Coalesce将返回列表中的第一个非null值。 从而:

1
SELECT COALESCE(NULL, NULL, 5);

返回5,而

1
SELECT COALESCE(NULL, 2, 5);

返回2

Coalesce将采取大量的论点。 没有记录的最大值。 我测试了它将100个参数并且它成功了。 对于绝大多数情况来说,这应该是充足的。


How do I emulate the ISNULL() functionality ?

1
SELECT (FIELD IS NULL) FROM ...


尝试:

1
SELECT COALESCE(NULLIF(FIELD, ''), another_field) FROM TABLE_NAME


创建以下功能

1
2
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'

它会起作用。

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