什么是ISNULL()的PostgreSQL等价物

时间:2010-02-06 19:59:47

标签: sql-server postgresql null

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

SELECT ISNULL(Field,'Empty') from Table

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

5 个答案:

答案 0 :(得分:417)

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

或更具惯用性:

SELECT coalesce(field, 'Empty') AS field_alias

答案 1 :(得分:72)

改为使用COALESCE()

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

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

SELECT COALESCE(null, null, 5); 

返回5,而

SELECT COALESCE(null, 2, 5);

返回2

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

答案 2 :(得分:23)

  

如何模拟ISNULL()功能?

SELECT (Field IS NULL) FROM ...

答案 3 :(得分:14)

尝试:

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

答案 4 :(得分:-10)

创建以下功能

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'

它会起作用。

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