Re: Concatenar cadena texto con booleano

From: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
To: Yoel Mc Lennan <listas(at)yoel(dot)com(dot)ar>
Cc: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Concatenar cadena texto con booleano
Date: 2008-07-24 14:09:43
Message-ID: 20080724140943.GA9094@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Yoel Mc Lennan escribió:

Hola,

> Buenas, alguna idea de como concatenar un string con un boolean ?
>
> eJ :
> nombre varchar;
> propio bool;
> dato vacrhar;
>
> propio=false;
>
>
> dato := nombe || propio (aparentemente no se puede)

En 8.3 funciona bien:

alvherre=# select 'hola'::text || 't'::bool;
?column?
----------
holatrue
(1 ligne)

Pero en 8.2 falla:

alvherre=# select 'hola'::text || 't'::bool;
ERROR: operator does not exist: text || boolean
LINE 1: select 'hola'::text || 't'::bool;
^
HINT: No operator matches the given name and argument type(s). You may need to add explicit type casts.

El experimento obvio seria aplicar un cast a texto, pero no funciona:

alvherre=# select 'hola'::text || 't'::bool::text;
ERROR: cannot cast type boolean to text
LINE 1: select 'hola'::text || 't'::bool::text;
^

Lo que puedes hacer es convertir el booleano a cstring usando la funcion
boolout(), y luego el cstring a texto usando la funcion textin(), de la
siguiente forma:

alvherre=# select 'hola'::text || textin(boolout('t'::bool));
?column?
----------
holat
(1 row)

Observa que la representacion en texto del booleano es distinta en 8.2
(una sola letra, t o f) que en 8.3 ("true" o "false"). Si quieres hacer
algo mas complicado necesitaras un CASE.

--
Alvaro Herrera http://www.amazon.com/gp/registry/5ZYLFMCVHXC
"Cómo ponemos nuestros dedos en la arcilla del otro. Eso es la amistad; jugar
al alfarero y ver qué formas se pueden sacar del otro" (C. Halloway en
La Feria de las Tinieblas, R. Bradbury)

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Herrera 2008-07-24 14:11:43 Re: Linea de Comandos
Previous Message Miguel Rodríguez Penabad 2008-07-24 14:04:14 Re: [OT] como lograr campo consecutivo sin fallar ?