在 MS SQL-Server 中,我可以执行以下操作:
SELECT ISNULL(Field,'Empty') from Table
,但在 PostgreSQL 中会出现语法错误。如何模拟 ISNULL()
功能呢?SELECT ISNULL(Field,'Empty') from Table
,但在 PostgreSQL 中会出现语法错误。如何模拟 ISNULL()
功能呢?SELECT CASE WHEN field IS NULL THEN 'Empty' ELSE field END AS field_alias
更符合习惯的写法:
SELECT coalesce(field, 'Empty') AS field_alias
coalesce
给予加一赞(+1)。(附注:在 MS SQL Server 中也可以使用该函数。)" - Alison R.coalesce
函数,而 isnull
则是微软特有的函数,本质上与只有两个参数的 coalesce
函数相同。 - GSerg使用COALESCE()
代替:
SELECT COALESCE(Field,'Empty') from Table;
Coalesce提供了比ISNULL
更多的功能。它的作用类似于ISNULL
,但是会返回列表中第一个非空值。因此:
SELECT COALESCE(null, null, 5);
返回 5,而
SELECT COALESCE(null, 2, 5);
返回 2
Coalesce 可以接收大量的参数。没有记录的最大值。我测试了100个参数它成功执行了。这对于绝大部分情况应该足够了。
我如何模拟ISNULL()函数的功能?
SELECT (Field IS NULL) FROM ...
ISNULL
是什么,但是在SQL Server中,field IS NULL
会返回一个布尔值,而ISNULL
则类似于COALESCE
:它会返回非空值中的一个。这篇答案是非常错误的,请查看文档:ISNULL
。 - jpmc26尝试:
SELECT COALESCE(NULLIF(field, ''), another_field) FROM table_name
ISNULL
函数需要两个参数,并且如果第一个参数是null
,则返回第二个参数,否则返回第一个参数。 - GSerg