Обсуждение: text & char(32)
Hi all,
Can you help me a bit ?
The question is: how can I compare TEXT and CHAR(32) types ?
More detailed description:
my=> create table foo (tt text, cc char(32));
CREATE
my=> insert into foo values ('aa', 'ab');
INSERT 27476810 1
my=> insert into foo values ('aa', 'aa');
INSERT 27476811 1
my=> select * from foo where tt=cc;
tt|cc
--+--
(0 rows)
So the operator '=' doesn't work as I expected.
Any help will be appreciated.
--
Best regards,
Vladimir mailto:gsmith@eurocom.od.ua
On Tue, 19 Sep 2000, Vladimir V. Zolotych wrote:
> Hi all,
> Can you help me a bit ?
> The question is: how can I compare TEXT and CHAR(32) types ?
> More detailed description:
> my=> create table foo (tt text, cc char(32));
>
> CREATE
> my=> insert into foo values ('aa', 'ab');
>
> INSERT 27476810 1
> my=> insert into foo values ('aa', 'aa');
>
> INSERT 27476811 1
> my=> select * from foo where tt=cc;
>
> tt|cc
> --+--
> (0 rows)
> So the operator '=' doesn't work as I expected.
> Any help will be appreciated.
>
>
try
select * from foo where tt=trim(cc);
herbert
On Tue, 19 Sep 2000, Vladimir V. Zolotych wrote:
> Hi all,
> Can you help me a bit ?
> The question is: how can I compare TEXT and CHAR(32) types ?
> More detailed description:
> my=> create table foo (tt text, cc char(32));
>
> CREATE
> my=> insert into foo values ('aa', 'ab');
>
> INSERT 27476810 1
> my=> insert into foo values ('aa', 'aa');
>
> INSERT 27476811 1
> my=> select * from foo where tt=cc;
>
> tt|cc
> --+--
> (0 rows)
Because you not compare 'aa' and 'aa' but
'aa' and 'aa '
^^^^^^^^^^^^^^^^^^^^^^
32 chars
try:
test=# select * from foo where tt::char = cc;
tt | cc
----+----------------------------------
aa | aa
(1 row)
Better is use varchar(32) for 'cc' if you want run this (tt=cc) query
often.
Karel
If your define your table using varchar(32), instead of char(32), your
query will work fine.
--
banghe
Herbert Ambos wrote:
> On Tue, 19 Sep 2000, Vladimir V. Zolotych wrote:
>
> > Hi all,
> > Can you help me a bit ?
> > The question is: how can I compare TEXT and CHAR(32) types ?
> > More detailed description:
> > my=> create table foo (tt text, cc char(32));
> >
> > CREATE
> > my=> insert into foo values ('aa', 'ab');
> >
> > INSERT 27476810 1
> > my=> insert into foo values ('aa', 'aa');
> >
> > INSERT 27476811 1
> > my=> select * from foo where tt=cc;
> >
> > tt|cc
> > --+--
> > (0 rows)
> > So the operator '=' doesn't work as I expected.
> > Any help will be appreciated.
> >
> >
>
> try
>
> select * from foo where tt=trim(cc);
>
> herbert