In MS SQL-Server, I can do:
SELECT ISNULL(Field,'Empty') from Table
But in PostgreSQL I get a syntax error. How do I emulate the ISNULL()
functionality ?
SELECT CASE WHEN field IS NULL THEN 'Empty' ELSE field END AS field_alias
Or more idiomatic:
SELECT coalesce(field, 'Empty') AS field_alias
coalesce
. (P.S. You can do that in MS SQL Server, too.)
Commented
Feb 6, 2010 at 20:09
coalesce
that is in SQL standard, with isnull
being an MS-specific function that essentially is coalesce
with only two parameters.
Use COALESCE()
instead:
SELECT COALESCE(Field,'Empty') from Table;
It functions much like ISNULL
, although provides more functionality. Coalesce will return the first non null value in the list. Thus:
SELECT COALESCE(null, null, 5);
returns 5, while
SELECT COALESCE(null, 2, 5);
returns 2
Coalesce will take a large number of arguments. There is no documented maximum. I tested it will 100 arguments and it succeeded. This should be plenty for the vast majority of situations.
How do I emulate the ISNULL() functionality ?
SELECT (Field IS NULL) FROM ...
Try:
SELECT COALESCE(NULLIF(field, ''), another_field) FROM table_name
ISNULL
takes two arguments and returns the second is the first isnull
, otherwise the first.