问答中心分类: SQLISNULL()的PostgreSQL等价物是什么
0
匿名用户 提问 1小时 前

在MS SQL Server中,我可以执行以下操作:
SELECT ISNULL(Field,'Empty') from Table
但在PostgreSQL中,我发现了一个语法错误。我如何模仿ISNULL()功能?

3 Answers
0
Jim Clouse 回答 1小时 前

使用COALESCE()相反:

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

它的功能很像ISNULL,但提供了更多功能。Coalesce将返回列表中的第一个非空值。因此:

SELECT COALESCE(null, null, 5);

返回5,而

SELECT COALESCE(null, 2, 5);

返回2
合并将需要大量的参数。没有记录的最大值。我测试了100个参数,它成功了。对于绝大多数情况来说,这应该足够了。

0
Artur 回答 1小时 前

如何模拟ISNULL()功能?

SELECT (Field IS NULL) FROM ...
smackshow 回复 1小时 前

这模拟了isnull的确切功能,但不确定为什么会被否决

Skrol29 回复 1小时 前

当然,这是这个问题的最佳答案。此表达式完全等效于ISNULL()。COALESCE()非常聪明,也很有趣,但它不能在关闭时执行ISNULL()。

jpmc26 回复 1小时 前

我不知道是什么ISNULL你们的评论者指的是,但是field IS NULL提供布尔值,而ISNULL在SQL Server中,操作类似COALESCE:它返回一个非-NULL价值观这个答案大错特错。请参阅文档:ISNULL.

David Noha 回复 1小时 前

我怀疑这些评论者是MySQL用户,他们没有意识到问题的开头是“在MS SQL Server中,…”MySQL有一个ISNULL()函数,该函数接受一个参数并返回0或1。t-SQL版本接受两个参数,其行为类似于COALESCE或Oracle的NVL。

Freeman Helmuth 回复 1小时 前

greatvovan,无论这是否是原始海报的意图,我相信人们想要的是“如何检查字段是否为null”的答案,而不一定是“ISNULL函数到底是如何工作的”。我的情况就是这样,这个答案非常适合。

0
user2718914 回答 1小时 前

尝试:

SELECT COALESCE(NULLIF(field, ''), another_field) FROM table_name
soulia 回复 1小时 前

这很好,因为它涵盖了文本字段不为null,但也为“空”的情况。