Re: [GENERAL] Where is IFNULL? - Mailing list pgsql-general

From Jose Soares
Subject Re: [GENERAL] Where is IFNULL?
Date
Msg-id 37DA9F2E.2D2928E8@sferacarta.com
Whole thread Raw
In response to Re: [GENERAL] Where is IFNULL?  ("Gene Selkov Jr." <selkovjr@selkovjr.xnet.com>)
List pgsql-general
select * from a;
a|b
-+-----
1|primo
2|
(2 rows)
 

SELECT CASE WHEN b IS NOT NULL
THEN 'pref.'||b||'.suf'
ELSE 'pref.'||'NULL'||'.suf'
END FROM a;

case
--------------
pref.primo.suf
pref.NULL.suf
(2 rows)
 

Jose'

Sascha Ziemann wrote:

"Gene Selkov Jr." <selkovjr@selkovjr.xnet.com>:

| > the user manual describes the function IFNULL on page 38, but when I
| > try to use it I get the following error:
| >
| >   users=> select ifnull (NULL, 'nix');
| >   ERROR:  No such function 'ifnull' with the specified attributes
|
| The manual seems to be obsolete. The related functions are named
| nullvalue and nonnullvalue, but neither takes more than one argument.

IFNULL isn't syntactic suguar.  It is like C's "1 ? 1 : 0".

| > Or does anybody know a simple way to concatenate strings, which can be
| > NULL?
|
| Don't know the answer to this, but it appears to be wrong not to
| ignore NULLs in concatenation.

That is the way Postgresql works:

users=> select 'tach' || NULL;
ERROR:  parser: parse error at or near ";"

users=> create function cat (text,text) returns text as 'begin return $1 || $2; end;' language 'plpgsql';
CREATE
users=> select cat ('tach', NULL);
ERROR:  typeidTypeRelid: Invalid type - oid = 0

| Why not trust this job to your client-side
| code?

Because I do not write that code and because my computer isn't
religious enough to trust anybody ;-)

Sascha

************

pgsql-general by date:

Previous
From: "Nikolay Mijaylov"
Date:
Subject: Re: [GENERAL] get the previous assigned sequence value
Next
From: David Sauer
Date:
Subject: Setting of locales at runtime ?