Format of BOOLEAN

Started by Lehmeier, Michaelalmost 25 years ago5 messagesgeneral
Jump to latest
#1Lehmeier, Michael
michael.lehmeier@cognitech.de

Hello

When I SELECT a row with a BOOLEAN in it I get either 't' or 'f'.
But when I use this same value in the WHERE condition I get an error,
because PostgreSQL demands either 'true' or 'false'.

Example:

testdb=# create table testtable (acolumn BOOLEAN);
CREATE
testdb=# INSERT INTO testtable VALUES (true);
INSERT 161246 1
testdb=# SELECT * FROM testtable;
acolumn
---------
t
(1 row)

testdb=# SELECT * FROM testtable WHERE acolumn = t;
ERROR: Attribute 't' not found

This is a real problem for me since I am currently writing on a mostly
database independent engine. PostgreSQL would be the the first time that
I can't write into a database what I read from it.

Is it possible to change the settings of PostgreSQL somewhere so that
I get 'true' or 'false'?

Thank you!

#2Doug McNaught
doug@wireboard.com
In reply to: Lehmeier, Michael (#1)
Re: Format of BOOLEAN

"Lehmeier, Michael" <michael.lehmeier@cognitech.de> writes:

Hello

When I SELECT a row with a BOOLEAN in it I get either 't' or 'f'.
But when I use this same value in the WHERE condition I get an error,
because PostgreSQL demands either 'true' or 'false'.

If you quote the value you get back from Postgres (which you probably
should be doing anyway) it will work:

foo=# create table test1 (f1 boolean);
CREATE
foo=# insert into test1 values ('t');
INSERT 31078 1
foo=# select * from test1;
f1
----
t
(1 row)

foo=# select * from test1 where f1='t';
f1
----
t
(1 row)

-Doug
--
The rain man gave me two cures; he said jump right in,
The first was Texas medicine--the second was just railroad gin,
And like a fool I mixed them, and it strangled up my mind,
Now people just get uglier, and I got no sense of time... --Dylan

#3Thalis A. Kalfigopoulos
thalis@cs.pitt.edu
In reply to: Lehmeier, Michael (#1)
Re: Format of BOOLEAN

On Thu, 7 Jun 2001, Lehmeier, Michael wrote:

Hello

When I SELECT a row with a BOOLEAN in it I get either 't' or 'f'.
But when I use this same value in the WHERE condition I get an error,
because PostgreSQL demands either 'true' or 'false'.

Example:

testdb=# create table testtable (acolumn BOOLEAN);
CREATE
testdb=# INSERT INTO testtable VALUES (true);
INSERT 161246 1
testdb=# SELECT * FROM testtable;
acolumn
---------
t
(1 row)

testdb=# SELECT * FROM testtable WHERE acolumn = t;
ERROR: Attribute 't' not found

This is a real problem for me since I am currently writing on a mostly
database independent engine. PostgreSQL would be the the first time that
I can't write into a database what I read from it.

you mean read from a db what you wrote into it

Is it possible to change the settings of PostgreSQL somewhere so that
I get 'true' or 'false'?

Thank you!

You have to give

SELECT * FROM testtable WHERE col='t'; [single quote the value]

It also works with WHERE col='true';

cheers,
thalis

#4Nicolas Huillard
nhuillard@ghs.fr
In reply to: Thalis A. Kalfigopoulos (#3)
RE: Format of BOOLEAN

-----Message d'origine-----
De: Lehmeier, Michael [SMTP:michael.lehmeier@cognitech.de]
Date: jeudi 7 juin 2001 18:06
Objet: [GENERAL] Format of BOOLEAN

testdb=# SELECT * FROM testtable WHERE acolumn = t;
ERROR: Attribute 't' not found

testdb=# SELECT * FROM testtable WHERE acolumn = 't';

Don't forget the single quote around the t : a boolean is a single char...

NH

#5Peter Eisentraut
peter_e@gmx.net
In reply to: Lehmeier, Michael (#1)
Re: Format of BOOLEAN

Lehmeier, Michael writes:

testdb=# SELECT * FROM testtable WHERE acolumn = t;
ERROR: Attribute 't' not found

SELECT * FROM testtable WHERE acolumn = 't';

Or better yet (SQL compatible):

SELECT * FROM testtable WHERE acolumn is true;

The latter is a special syntax, whereas in the former the 't' is just an
ordinary data literal.

Is it possible to change the settings of PostgreSQL somewhere so that
I get 'true' or 'false'?

case when acolumn then 'true' else 'false' end

--
Peter Eisentraut peter_e@gmx.net http://funkturm.homeip.net/~peter