什么是相当于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不同的版本。