Search Postgresql Archives

Re: Problem using NULLIF in a CASE expression

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



You're misusing the case construct, and try to compare a text result
(from the 'nullif') with a boolean result (from the 'not null'). You
probably should use the other form of case:

SELECT CASE WHEN NULLIF(btrim(' A string', ' '), ') IS NULL THEN NULL
ELSE 6 END AS type_id;

I guess you were looking for something like:

db=> SELECT CASE WHEN NULLIF(btrim(' A string', ' '), '') IS NULL THEN
NULL ELSE 6 END AS type_id;
 type_id
---------
       6
(1 row)
 
db=> SELECT CASE WHEN NULLIF(btrim(' ', ' '), '') IS NULL THEN NULL ELSE
6 END AS type_id;
 type_id
---------
         
(1 row)
 

Cheers,
Csaba.


On Fri, 2005-09-09 at 13:45, Bruno BAGUETTE wrote:
> Hello,
> 
> I have a problem using NULLIF inside a CASE expression.
> 
> I explain the goal of my query : I have a table where there is two 
> fields : one varchar field and one INT8 field.
> When the varchar field is empty I have to display the INT8 field.
> If the varchar field is not empty I have to display a NULL value (even 
> if the INT8 field contains something).
> 
> BUT : that table is used by several applications and theses applications 
> does not always store NULL in the varchar field. Some applications store 
> an empty string '', or stores <space> char(s).
> SO, I have to do a btrim and to get a NULL value when I just have '' 
> after the btrim.
> 
> I wrote another (and quite shorter!) SQL query to resume the problem :
> 
> SELECT CASE NULLIF(btrim(' A string', ' '), '')
>         WHEN NOT NULL
>           THEN NULL
>         ELSE 6
>         END AS type_id;
> 
> ERROR:  operator does not exist: text = boolean
> HINT:  No operator matches the given name and argument type(s). You may 
> need to add explicit type casts.
> 
> Why this query does not accept the NULLIF ?
> What can I do to solve that problem ?
> 
> Thanks in advance !
> 
> Bruno BAGUETTE.
> 
> ---------------------------(end of broadcast)---------------------------
> TIP 3: Have you checked our extensive FAQ?
> 
>                http://www.postgresql.org/docs/faq


---------------------------(end of broadcast)---------------------------
TIP 2: Don't 'kill -9' the postmaster

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux