什么是相当于ISNULL()的PostgreSQL

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

SELECT ISNULL(Field,'Empty') from Table

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

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

还是更习语:

 SELECT coalesce(field, 'Empty') AS field_alias 

使用COALESCE()来代替:

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

它的function非常像ISNULL ,虽然提供了更多的function。 合并将返回列表中的第一个非空值。 从而:

 SELECT COALESCE(null, null, 5); 

返回5,而

 SELECT COALESCE(null, 2, 5); 

返回2

合并将需要大量的参数。 没有logging的最大值。 我testing了它会有100个参数,并且成功了。 对绝大多数情况来说这应该是充足的。

我如何模拟ISNULL()function?

SELECT(Field IS NULL)FROM …

尝试:

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

创build以下function

 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' 

它会工作。

您可以使用不同的参数types创build不同的版本。