Re: Una de comparaciones

Lists: pgsql-es-ayuda
From: jcb <jcb(at)greccosoft(dot)es>
To: Lista Postgres ES <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Una de comparaciones
Date: 2008-01-30 21:59:52
Message-ID: 1201730392.32676.9.camel@hwcasa
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

hola, tengo un problema con los espacios finales de un campo en una
comparación
supongamos un campo de una tabla cualquiera con un campo codigo
char(14)

imaginemos que codigo dentro de la tabla tiene los valores 'AA' y 'BB'

select * from tabla where codigo = 'AA'

Estas select encuentra datos pero esta que sigue no

select * from tabla where codigo = 'AA '

resumiendo ¿hay algun parametro o algo parecido que haga que select
'A'='A ' devuelva true ?

Gracias


From: "Beto Guerrero" <guerrero(dot)beto(at)gmail(dot)com>
To: jcb <jcb(at)greccosoft(dot)es>
Cc: "Lista Postgres ES" <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Una de comparaciones
Date: 2008-01-30 22:37:29
Message-ID: cbb40a720801301437sf83b6e7uc063345a238793b7@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

No se su te ayude pero porque no hacer algo como:

select * from tabla where trim(codigo) = trim('AA ')

a menos que a fuerza quieres que te acepte: codigo = 'AA '

2008/1/30, jcb <jcb(at)greccosoft(dot)es>:
> hola, tengo un problema con los espacios finales de un campo en una
> comparación
> supongamos un campo de una tabla cualquiera con un campo codigo
> char(14)
>
> imaginemos que codigo dentro de la tabla tiene los valores 'AA' y 'BB'
>
> select * from tabla where codigo = 'AA'
>
> Estas select encuentra datos pero esta que sigue no
>
>
> select * from tabla where codigo = 'AA '
>
> resumiendo ¿hay algun parametro o algo parecido que haga que select
> 'A'='A ' devuelva true ?
>
> Gracias
>
>
>
>
>
> --
> TIP 10: no uses HTML en tu pregunta, seguro que quien responda no podrá leerlo
>

--

Atte

Alberto Nicolas Guerrero P.
Desarrollador Java / Open Source
Tel: +51.15331720
Cel: +51.197208984


From: Juan Caillava <list(dot)bransh(at)gmail(dot)com>
To: jcb <jcb(at)greccosoft(dot)es>
Cc: Lista Postgres ES <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Una de comparaciones
Date: 2008-01-30 23:43:52
Message-ID: 47A10BB8.6010601@gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

Hola, podes usar la funcion trim() o btrim() si preferis!

jcb escribió:
> hola, tengo un problema con los espacios finales de un campo en una
> comparación
> supongamos un campo de una tabla cualquiera con un campo codigo
> char(14)
>
> imaginemos que codigo dentro de la tabla tiene los valores 'AA' y 'BB'
>
> select * from tabla where codigo = 'AA'
>
> Estas select encuentra datos pero esta que sigue no
>
>
> select * from tabla where codigo = 'AA '
>
> resumiendo ¿hay algun parametro o algo parecido que haga que select
> 'A'='A ' devuelva true ?
>
> Gracias
>
>
>
>
> --
> TIP 10: no uses HTML en tu pregunta, seguro que quien responda no podr� leerlo
>
>


From: Miguel Rodríguez Penabad <penabad(at)gmail(dot)com>
To: "Lista Postgres ES" <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Una de comparaciones
Date: 2008-01-31 00:32:08
Message-ID: 95335e4e0801301632v6eb61f1ft316a06aae2ed111a@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

> > resumiendo ¿hay algun parametro o algo parecido que haga que select
> > 'A'='A ' devuelva true ?

Además, depende del tipo de dato que uses.
Mira este ejemplillo. Parece que usando char(n) hace lo que tú quieres

Miguel=> create table xa(a text, b varchar(10), c char(10));
CREATE TABLE
Miguel=> insert into xa values('a ','b ', 'c ');
INSERT 0 1
Miguel=> select * from xa;
a | b | c
----+----+------------
a | b | c
(1 row)

Miguel=> select a||b||c||'.' from xa;
?column?
----------
a b c.
(1 row)

Miguel=> update xa set c='X ';
UPDATE 1
Miguel=> select a||b||c||'.' from xa;
?column?
----------
a b X.
(1 row)

Miguel=> select * from xa where c='X';
a | b | c
----+----+------------
a | b | X
(1 row)

No sé si es un error de postgres, pero en todo caso me parece
"peligroso" confiar en que siempre funcione así. Mejor usa trim() como
te han dicho otros compañeros
--
Miguel Rodríguez Penabad


From: Rodriguez Fernando <rodriguez(at)ort(dot)edu(dot)uy>
To: jcb <jcb(at)greccosoft(dot)es>
Cc: Lista Postgres ES <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Una de comparaciones
Date: 2008-01-31 10:27:36
Message-ID: 47A1A298.8040006@ort.edu.uy
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-es-ayuda

jcb wrote:
> hola, tengo un problema con los espacios finales de un campo en una
> comparación
> supongamos un campo de una tabla cualquiera con un campo codigo
> char(14)
>
> imaginemos que codigo dentro de la tabla tiene los valores 'AA' y 'BB'
>
> select * from tabla where codigo = 'AA'
>
> Estas select encuentra datos pero esta que sigue no
>
>
> select * from tabla where codigo = 'AA '
>
> resumiendo ¿hay algun parametro o algo parecido que haga que select
> 'A'='A ' devuelva true ?
>
> Gracias
>
>
>
>
> --
> TIP 10: no uses HTML en tu pregunta, seguro que quien responda no podr� leerlo
>
Hola, lo mas sano es que hagas :
trim antes de guardarlo en la base ó
de no ser posible a la consulta deverias ponerle
trim(codigo) =trim('AA ') ó
update <tabla> set codigo=trim(codigo) y luego solo le
pones trim el parametro de la consulta codigo=trim('AA ')

Saludos Fernando