From: Arjen van der Meijden <acm@tweakers.net>
To: pgsql-sql@postgresql.org
Subject: Re: Boolean to int
Date: Thu, 04 Jul 2002 23:32:20 +0200
Message-ID: <ag2esu$jmb$1@news.tudelft.nl> (raw)
References: <1025803595.20819.239.camel@fukse>
How about this hint in the postgresql-manual:
"Tip: Values of the boolean type cannot be cast directly to other
types (e.g., CAST (boolval AS integer) does not work). This can be
accomplished using the CASE expression: CASE WHEN boolval THEN 'value if
true' ELSE 'value if false' END. See also Section 4.12. "
For more information:
http://www.postgresql.org/idocs/index.php?datatype-boolean.html
and
http://www.postgresql.org/idocs/index.php?functions-conditional.html
Stephane Schildknecht wrote:
> Hi,=20
>
> I'd like to get 1 or 0 from a select on a boolean field.=20
>
> How could I do ?
>
> I tried the following rule, which I can't insert :
>
> CREATE FUNCTION bool_to_int( boolean ) RETURNS integer AS '
> DECLARE
> my_bool ALIAS FOR $1 ;
> BEGIN
> -- Retourne 1 si true, 0 si false
> IF my_bool IS FALSE THEN=20
> RETURN 0 ;
> ELSIF my_bool IS TRUE THEN
> RETURN 1 ;
> ELSE RETURN -1 ;
> END IF ;
> END ;
> ' LANGUAGE 'plpgsql';
>
> CREATE RULE boolean_return AS ON SELECT TO DOCUMENT DO INSTEAD
> SELECT=20
> document_id,
> workflow_id,
> type_document_id,
> image_id,
> theme_id,
> document_version,
> document_surtitre,
> document_titre,
> document_chapeau,
> document_synthese,
> document_corps,
> document_pdf,
> document_date_creation,
> document_mot_clef,
> (bool_to_int(document_online)) as document_online,
> bool_to_int(document_valid) as document_valid FROM document;
>
>
> psql:cnambo_proc_stock.sql:69: ERROR: select rule's target entry 15
> has different type from attribute document_online
>
> Who could help me ?
>
> S@S
>
> --=20
> _St=E9phane SCHILDKNECHT___________________________________
> | AurorA-SAS 69-71, Av. Pierre Grenier 92100 BOULOGNE |
> | Tel : 01.58.17.03.20 Fax : 01.58.17.03.21 |=20
> | mailto:sschildknecht@aurora-linux.com - ICQ : 142504394 |
> | "Free Markets have taught that innovation is best when |=20
> | ideas flow freely." Adam Smith |
> |_________________________________________________________|
>
>
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 3: if posting/reading through Usenet, please send an appropriate
> subscribe-nomail command to majordomo@postgresql.org so that your
> message can get through to the mailing list cleanly
>
>
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: pgsql-sql@postgresql.org
Cc: acm@tweakers.net
Subject: Re: Boolean to int
In-Reply-To: <ag2esu$jmb$1@news.tudelft.nl>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox