On Thu, 20 Oct 2005, Doug Quale wrote:

"Guy Rouillier" <[EMAIL PROTECTED]> writes:

Doug Quale wrote:

# select 'a'::char(8) = 'a '::char(8);
 ?column?
----------
 t
(1 row)

Trailing blanks aren't significant in fixed-length strings, so the
question is whether Postgresql treats comparison of varchars right.

This result is being misinterpreted.

select length('a'::char(8)) ==> 1
select length('a '::char(8)) ==> 1

So it isn't that the two different strings are comparing equal.  The
process of casting them to char(8) is trimming the blanks, so by the
time they become fixed length strings, they are indeed equal.

Huh??? What version of PG are you using?  On 7.4.9,


test=# select length('a'::char(8));
length
--------
     8
(1 row)

test=# select length('a '::char(8));
length
--------
     8
(1 row)

The truncation you describe would simply be wrong.

ams=# select length('a '::char(8));
 length
--------
      1
(1 row)

ams=# select version();
                               version
----------------------------------------------------------------------
 PostgreSQL 8.0.2 on i386-portbld-freebsd4.11, compiled by GCC 2.95.4
(1 row)

ams=#


----
Marc G. Fournier           Hub.Org Networking Services (http://www.hub.org)
Email: [EMAIL PROTECTED]           Yahoo!: yscrappy              ICQ: 7615664

---------------------------(end of broadcast)---------------------------
TIP 6: explain analyze is your friend

Reply via email to