在MS SQL-Server中,我可以这样做:
SELECT ISNULL(Field,'Empty') from Table
但是在PostgreSQL中我遇到了语法错误。如何模拟ISNULL()
功能?
答案 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'
它会起作用。
您可以使用不同的参数类型创建不同的版本。