Thread: Type casting bool?

Type casting bool?

From
phil@Stimpy.netroedge.com
Date:
This seems like it would be simple, but I'm having troubles getting it           
to work.  All I wish to do is have Postgresql return '0' or '1'       
instead of 'f' or 't' for bool types.  This would simplify life for me               
since I'm trying to dump these values right into expressions outside            
of the context of SQL.   Right now my parsers are choking on the 't's
and 'f's from PostgreSQL.
               
 

I've tried:
               
 

select mybool::int4;
               
 

But, I get,
               
 

ERROR:  function int4(bool) does not exist
               
 

Hummm.... I want to do something like:
               
 

select (mybool?1:0);
               
 

But, that's not the right syntax.  I'd love to be able to get this
               
 
working w/o defining new functions or types (i.e., make it portable).
               
 

Ideas?  I've poured over the documentation and the current function
               
 
and operators, but this doesn't seem to be implemented?!
               
 

Thanks!
               
 


Phil

-- 
Philip Edelbrock -- IS Manager -- Edge Design, Corvallis, OR  phil@netroedge.com -- http://www.netroedge.com/~philPGP
F16:01 D2 FD 01 B5 46 F4 F0  3A 8B 9D 7E 14 7F FB 7A
 


Re: [SQL] Type casting bool?

From
"tjk@tksoft.com"
Date:
If you are using Postgres 6.5 +, you can use

select case when mybool then 1 else 0 end from mytable;

Of course, this would not, explicitly, take into consideration
null fields.


Troy


>
>
> This seems like it would be simple, but I'm having troubles getting it
> to work.  All I wish to do is have Postgresql return '0' or '1'
> instead of 'f' or 't' for bool types.  This would simplify life for me
> since I'm trying to dump these values right into expressions outside
> of the context of SQL.   Right now my parsers are choking on the 't's
> and 'f's from PostgreSQL.
                  
>
> I've tried:
                  
>
> select mybool::int4;
                  
>
> But, I get,
                  
>
> ERROR:  function int4(bool) does not exist
                  
>
> Hummm.... I want to do something like:
                  
>
> select (mybool?1:0);
                  
>
> But, that's not the right syntax.  I'd love to be able to get this
                  
> working w/o defining new functions or types (i.e., make it portable).
                  
>
> Ideas?  I've poured over the documentation and the current function
                  
> and operators, but this doesn't seem to be implemented?!
                  
>
> Thanks!
                  
>
>
> Phil
>
> --
> Philip Edelbrock -- IS Manager -- Edge Design, Corvallis, OR
>    phil@netroedge.com -- http://www.netroedge.com/~phil
>  PGP F16: 01 D2 FD 01 B5 46 F4 F0  3A 8B 9D 7E 14 7F FB 7A
>
> ************
>
>

Re: [SQL] Type casting bool?

From
Tom Lane
Date:
A number of people have suggested that there should be an int4(bool)
conversion function, but no one's got round to actually writing it.

Presumably the behavior ought to befalse => 0true  => 1NULL  => NULL
        regards, tom lane