Обсуждение: 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