Thread: ::text problem

::text problem

From
"Kumar"
Date:
Hi ,
 
I am running postgres 7.3.4 on Linux 7.2. I wanna print 'Not Supplied' if 'c1' column of datatype - 'timestamp' is null. For that I am using case statement
 
SELECT
    CASE WHEN c1 IS NULL THEN 'Record_Not_Found'ELSE c1 END as approval_date
FROM  t1;
ERROR:  Bad timestamp external representation 'Record_Not_Found'
 
 
SELECT
    CASE WHEN c1 IS NULL THEN 'Record_Not_Found'::text ELSE c1 END as approval_date
FROM  t1;
ERROR:  CASE types 'timestamp without time zone' and 'text' not matched
 
 
Where I am doing wrong? Please shed some light.
 
Regards
Senthil Kumar S
DBA

Re: ::text problem

From
Richard Huxton
Date:
On Tuesday 25 November 2003 12:37, Kumar wrote:
>
> SELECT
>     CASE WHEN c1 IS NULL THEN 'Record_Not_Found'ELSE c1 END as
> approval_date FROM  t1;
> ERROR:  Bad timestamp external representation 'Record_Not_Found'
>
>
> SELECT
>     CASE WHEN c1 IS NULL THEN 'Record_Not_Found'::text ELSE c1 END as
> approval_date FROM  t1;
> ERROR:  CASE types 'timestamp without time zone' and 'text' not matched

Almost - you're on the right lines. Try:
SELECT CASE   WHEN c1 IS NULL THEN 'Record_Not_Found'::text   ELSE c1::text END as approval_date FROM  t1;

You need to make sure both options return type text.

--  Richard Huxton Archonet Ltd


Re: ::text problem

From
"Kumar"
Date:
Thanks a lot. It worked.

----- Original Message ----- 
From: "Richard Huxton" <dev@archonet.com>
To: "Kumar" <sgnerd@yahoo.com.sg>; "psql" <pgsql-sql@postgresql.org>
Sent: Tuesday, November 25, 2003 9:44 PM
Subject: Re: [SQL] ::text problem


> On Tuesday 25 November 2003 12:37, Kumar wrote:
> >
> > SELECT
> >     CASE WHEN c1 IS NULL THEN 'Record_Not_Found'ELSE c1 END as
> > approval_date FROM  t1;
> > ERROR:  Bad timestamp external representation 'Record_Not_Found'
> >
> >
> > SELECT
> >     CASE WHEN c1 IS NULL THEN 'Record_Not_Found'::text ELSE c1 END as
> > approval_date FROM  t1;
> > ERROR:  CASE types 'timestamp without time zone' and 'text' not matched
> 
> Almost - you're on the right lines. Try:
> SELECT
>   CASE
>     WHEN c1 IS NULL THEN 'Record_Not_Found'::text
>     ELSE c1::text
>   END as approval_date FROM  t1;
> 
> You need to make sure both options return type text.
> 
> -- 
>   Richard Huxton
>   Archonet Ltd